使用Flyway时检查docker-compose服务中的数据库依赖关系

时间:2019-04-10 14:45:05

标签: docker-compose

我想通过docker-compose部署微服务,这取决于其他容器和数据库的迁移。到目前为止,我们一直使用由GoCD控制的docker run命令。这确实工作得很好,但是已经到了环境范围变得难以管理的地步。

因此,我们想使用docker-compose定义服务。

流程基本上是这样的:

  1. 创建Postgres(带有init.sql的初始数据库)和Kafka容器。
  2. 运行Flyway迁移微服务所需的所有数据。
  3. 仅在数据库迁移准备就绪时才部署微服务。

检查数据库是否准备就绪似乎很容易。只需使Flyway依赖Postgres容器并检查端口是否正在运行即可。或更精细地检查是否创建了数据库(pg_isready)。 我还可以想象合并不同的docker-compose.yml文件时部署多个环境。

但是后来我遇到了障碍。如何检查Flyway迁移是否成功?我可以执行一个shell命令,并检查是否已创建表。但这似乎不是很优雅。

此外,我将如何再次运行Flyway来进行另一次数据库迁移,但又不会碰到正在运行的容器。只需在不依赖容器的情况下重新启动flyway(docker-compose -f docker-compose-infrastructure.yml -f docker-compose-services.yml up --no-deps -d boxfuse / flyway)?

使用docker-compose甚至是一个好方案吗?某种程度上,我有种感觉,我正在扭曲docker-compose来做它不适合做的事情,这通常意味着您做错了...

0 个答案:

没有答案