如何将 Docker 容器中的 Flyway 运行 连接到 Docker 容器中的数据库 运行?
How to connect Flyway running in a Docker container to a database running in a Docker container?
我们使用 Microsoft SQL 服务器作为数据库,并使用 Flyway 对其进行管理。现在我想通过在 Docker 中启动 SQL 服务器和在我自己的 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 中执行此操作的正确方法是什么?我知道那里的 pods 从所有 运行 pods 中获取主机和端口作为环境变量(请参阅我的假设解决方案)。但是这些变量都没有解决,没有解决我的问题。
你是如何做这样的测试的?
如果我没猜错,问题是关于如何在没有 docker-compose
的情况下连接两个 docker 容器。事实上,docker-compose
并没有在这些方面增加很多内容——它只是自动执行了几个步骤。
要连接容器,您必须:
新建用户定义的桥接网络(完成一次):docker network create foo
使用 --network=foo
启动选项将两个容器连接到此网络
指定容器名称而不是使用 --name=xyz
自动生成
在您的连接字符串中使用这些名称而不是 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
我们使用 Microsoft SQL 服务器作为数据库,并使用 Flyway 对其进行管理。现在我想通过在 Docker 中启动 SQL 服务器和在我自己的 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 中执行此操作的正确方法是什么?我知道那里的 pods 从所有 运行 pods 中获取主机和端口作为环境变量(请参阅我的假设解决方案)。但是这些变量都没有解决,没有解决我的问题。
你是如何做这样的测试的?
如果我没猜错,问题是关于如何在没有 docker-compose
的情况下连接两个 docker 容器。事实上,docker-compose
并没有在这些方面增加很多内容——它只是自动执行了几个步骤。
要连接容器,您必须:
新建用户定义的桥接网络(完成一次):
docker network create foo
使用
--network=foo
启动选项将两个容器连接到此网络指定容器名称而不是使用
--name=xyz
自动生成
在您的连接字符串中使用这些名称而不是 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