针对 Dockerized Postgresql 的 Liquibase 回滚?
Liquibase RollBack against Dockerized Postgresql?
拥有一个 Dockerized Spring-Boot 应用程序和一个 PostgreSQL 数据库,
我怎样才能发出 cmd
mvn liquibase:rollback -Dliquibase.rollbackCount=4 -Dliquibase.password=*********
或任何等价物,
针对数据库?
请注意,我所有的 changelongs 都在 Spring-Boot 项目的资源文件夹中,并且我能够从项目的根目录 运行 上面的 CMD。
这是Spring-Boot app:
的docker文件
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}
我可以登录到应用程序容器,但没有安装更新日志文件或 maven 或 liquibase,因为所有内容都打包在 app.war
中
更新
我想备份 docker 化的数据库,在本地恢复它,然后 运行 从项目的根目录执行回滚命令。
最后我会备份本地数据库并将其还原到容器上。
这可能是最简单的方法。但是,我希望存在一种无需移动和恢复数据库的替代方法。
我按照我的 "strange" 想法做到了。
首先我备份了dockerized DB,
然后我把它恢复到本地数据库。
在本地我能够 运行 回滚命令,并进行了所需的更新。
最后我在dockerized DB上恢复了。
如果其他人运行遇到同样的麻烦,我希望它能有所帮助。
您可以 运行 针对 WAR 文件进行迁移。搜索更多 here "Run Migrator pulling changelogs from a .WAR file"。因此,如果您能够在容器内执行命令,那么您也应该能够执行 liquibase。
拥有一个 Dockerized Spring-Boot 应用程序和一个 PostgreSQL 数据库, 我怎样才能发出 cmd
mvn liquibase:rollback -Dliquibase.rollbackCount=4 -Dliquibase.password=*********
或任何等价物, 针对数据库? 请注意,我所有的 changelongs 都在 Spring-Boot 项目的资源文件夹中,并且我能够从项目的根目录 运行 上面的 CMD。
这是Spring-Boot app:
的docker文件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}
我可以登录到应用程序容器,但没有安装更新日志文件或 maven 或 liquibase,因为所有内容都打包在 app.war
中更新
我想备份 docker 化的数据库,在本地恢复它,然后 运行 从项目的根目录执行回滚命令。 最后我会备份本地数据库并将其还原到容器上。
这可能是最简单的方法。但是,我希望存在一种无需移动和恢复数据库的替代方法。
我按照我的 "strange" 想法做到了。
首先我备份了dockerized DB, 然后我把它恢复到本地数据库。
在本地我能够 运行 回滚命令,并进行了所需的更新。
最后我在dockerized DB上恢复了。
如果其他人运行遇到同样的麻烦,我希望它能有所帮助。
您可以 运行 针对 WAR 文件进行迁移。搜索更多 here "Run Migrator pulling changelogs from a .WAR file"。因此,如果您能够在容器内执行命令,那么您也应该能够执行 liquibase。