小编Bru*_*000的帖子

如何使用依赖的 Flyway 迁移服务设置 gitlab-ci mysql 服务?

我需要一个 Gitlab CI 设置来使用 mysql 数据库(普通 mysql 映像)和专用的 Flyway 迁移(自定义 docker 映像)进行集成测试。因此,我尝试将 mysql 定义为服务,并将我的自定义 docker 映像定义为服务。由于某种原因,flyway 无法连接到 MySQL 数据库(可能是因为它在 MySQL 数据库准备好连接之前启动)。

我正在从 Travis CI 迁移到免费的 Gitlab CI 版本(共享运行程序)。在 Travis CI 中,我使用一个 docker-compose 文件来运行数据库,等待它可以访问,然后运行 ​​flyway 迁移,然后我的集成测试连接到 MySQL 数据库。

请注意,出于某种原因,飞路迁移位于专用的 docker 映像中。我知道我的问题可以通过将 flyway 合并到 mysql 映像或将其合并到应用程序本身来解决。但是,在我的用例中有技术原因不这样做。

到目前为止我尝试过的替代步骤:

  • 使用 docker:dind 手动启动 mysql db 和 flyway。虽然这有效,但我无法从我的集成测试连接到 mysql 数据库。这似乎是 docker 中 docker 的一个限制。

  • 使用 docker:dind 针对 mysql 服务手动运行 flyway 迁移。在这种情况下,flyway 无法连接到 mysql 服务,因为它们位于不同的网络中。

我创建了一个微型示例,我试图在其中对普通 MySQL 数据库运行简单的迁移迁移。docker 镜像需要先构建一次,这有点递归。您可以在此处查看代码:https : //gitlab.com/Brutus5000/gitlab-services-test

gitlab-ci.yml 如下:

image: docker:stable …
Run Code Online (Sandbox Code Playgroud)

gitlab-ci

5
推荐指数
0
解决办法
1146
查看次数

标签 统计

gitlab-ci ×1