sql-server - 如何将运行在 Docker 容器中的 Flyway 连接到运行在 Docker 容器中的数据库?
问题描述
我们使用 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 中获取主机和端口作为环境变量(请参阅我的假设解决方案)。但是这些变量没有解决,它没有解决我的问题。
你是怎么做这样的测试的?
解决方案
如果我说对了,问题是关于如何在没有docker-compose
. 实际上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>
现在您可以使用从 Flyway 连接到 SQLserver=my-database
推荐阅读
- java - java类文件中的架构是什么意思?
- mongodb - 如何使用 typegoose 进行批量插入
- c++ - `(QWidget* pobj=0)` 和 `(QWidget* pwgt/*=0/)` 是干什么用的?
- angular - 如何使用
在 .ts 中使用 Angular 调用 API 服务 - jhipster - JHipster 嵌套组件
- c# - 我正在寻找检测 TabItem 将被更改并且 TabItem 被初始化的事件
- javascript - 单击后尝试更改单元格图像,单击后不会更改
- linux - Docker:安装/共享单个 sock 文件?
- java - 如何将字节 [] 类型的对象转换为字符串
- cakephp - CakePHP 4:简单的 JSON 视图返回