拥有Dockerized Spring-Boot应用程序和PostgreSQL数据库, 我该如何发出cmd
mvn liquibase:rollback -Dliquibase.rollbackCount=4 -Dliquibase.password=*********
或任何等价物, 针对数据库? 请注意,我所有的changelongs都在Spring-Boot项目的resource文件夹中,并且我能够从项目的根目录运行上述CMD。
这是 Spring-Boot应用程序的 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
这是docker-compose中的PostgreSQL服务:
app-postgresql:
image: postgres:9.6.5
mem_limit: 256m
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PWD}
我能够登录到应用容器,但是由于所有内容都打包在app.war中,因此没有安装changelog文件或maven或liquibase
更新
我当时正在考虑对dockerized数据库进行备份,在本地还原它,然后从项目的根目录运行rollback命令。 最后,我将备份本地数据库并将其还原到容器上。
这可能是最简单的方法。但是,我希望有一种替代方法,而无需移动和还原数据库。
答案 0 :(得分:1)
您可以对WAR文件运行迁移。搜索更多here“运行迁移器从.WAR文件中提取变更日志”。因此,如果您能够在容器内执行命令,那么您也应该能够执行liquibase。
答案 1 :(得分:0)
我是按照我的“奇怪”想法来做的。
首先,我对dockerized数据库进行了备份, 然后将其还原到本地数据库。
在本地,我能够运行rollback命令,并进行了必需的更新。
最后,我将其还原到了dockerized数据库上。
我希望如果有人遇到同样的麻烦也能有所帮助。