拥有一个应用程序和一个PostgreSQL数据库,我如何发出cmd?
mvn liquibase:rollback -Dliquibase.rollbackCount=4 -Dliquibase.password=*********或者任何类似的,针对数据库的?注意,我所有的变更拉长都在Spring项目的资源文件夹中,并且我能够从项目的根运行上面的CMD。
这是Spring应用程序的dockerfile。
FROM openjdk:8-jre-alpine
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
JAVA_OPTS=""
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.war
EXPOSE 8080 5701/udp
ADD *.war /app.war这是停靠者内部的PostgreSQL服务-组合:
app-postgresql:
image: postgres:9.6.5
mem_limit: 256m
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PWD}我可以登录到应用程序容器,但是没有安装任何变更文件、maven或液化库,因为所有东西都是在app.war中打包的
更新
我正在考虑对已被停靠的DB进行备份,在本地还原它,然后从项目的根运行rollback命令。最后,我会备份本地DB并在容器上还原它。
也许这是最简单的方法。但是,我希望有一种不需要移动和恢复DB的替代方法。
发布于 2018-12-09 21:25:14
您可以针对WAR文件运行迁移。搜索更多的这里“运行迁移器从.WAR文件中提取变更值”。因此,如果您能够在容器中执行命令,您也应该能够执行液化库。
发布于 2018-12-09 18:30:42
我按照我的“奇怪”想法做了这件事。
首先,我备份了一个被篡改的DB,然后将它还原到本地DB。
在本地,我能够运行rollback命令,并进行了所需的更新。
最后,我将它还原到了被篡改的DB上。
我希望别人遇到同样的麻烦会有帮助。
https://stackoverflow.com/questions/53684634
复制相似问题