如何将Docker容器中运行的Flyway连接到Docker容器中运行的数据库?

时间:2019-03-05 11:53:05

标签: sql-server docker flyway

我们使用Microsoft SQL Server作为数据库,并使用Flyway对其进行管理。现在,我想通过在Docker中启动SQL Server并在我自己的Docker容器中启动Flyway来测试Flyway脚本,该容器包含所有配置和所有Flyway数据库脚本(迁移)。

据我所知,不可能在Flyway配置文件中使用环境变量。理想情况下,这将是可能的:

flyway.url=jdbc:sqlserver://${MSSQL_SERVICE_HOST}:${MSSQL_SERVICE_PORT};databaseName=testing_pp
flyway.user=testing_pp
flyway.password=${MSSQL_SERVICE_PASSWORD}

事实上,我需要了解独立Docker和OpenShift的最佳策略。我俩都很新...

是否可以将IP地址和端口从一个正在运行的Docker容器注入到另一个容器?一个不涉及Docker Compose的东西?在OpenShift中正确的方法是什么?我知道那里的Pod从所有正在运行的Pod获取主机和端口作为环境变量(请参阅我的假设解决方案)。但是这些变量无法解决,无法解决我的问题。

您如何进行此类测试?

1 个答案:

答案 0 :(得分:1)

如果我说对了,问题是关于如何在没有docker-compose的情况下连接两个docker容器。实际上,docker-compose在这些方面并没有增加太多,它只是自动化了几个步骤。

要连接容器,您必须:

  1. 创建新的用户定义的桥接网络(完成一次):docker network create foo

  2. 使用--network=foo启动选项将两个容器都连接到该网络

  3. 指定容器名称,而不是使用--name=xyz

  4. 自动生成
  5. 使用这些名称代替连接字符串中寻址的IP。

    docker network create foo
    docker run -d --rm --name=my-database --network=foo <SQLServerImageName>
    docker run -d --rm --name=my-flyway --network=foo <FlyWayImageName>
    

现在,您可以使用server=my-database

从Flyway连接到SQL