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

标签 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 容器注入(inject)到另一个?一个不涉及 Docker Compose 的?在 OpenShift 中执行此操作的正确方法是什么?我知道那里的 pod 从所有正在运行的 pod 中获取主机和端口作为环境变量(请参阅我的假设解决方案)。但是这些变量没有解决,它没有解决我的问题。

你是如何做这样的测试的?

最佳答案

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

要连接容器,您必须:

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

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

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

    自动生成
  4. 在您的连接字符串中使用这些名称而不是 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

关于sql-server - 如何将在 Docker 容器中运行的 Flyway 连接到在 Docker 容器中运行的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55002250/

相关文章:

flyway - 如何记录 Flyway 执行的 SQL 语句?

java - Flyway 与 spring boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

sql-server - 注册新的 SQL 2000 服务器时更改默认端口

sql-server - 插入/更新/删除使用单个触发器还是多个触发器更好?

mysql - php_network_getaddresses : getaddrinfo failed error in Docker's adminer

bash - 在 Docker 容器启动时启动 bash 脚本不起作用

java - 如何通过 Flyway 使用 Spring Boot/Spring Security 的 JDBC 身份验证

sql-server - 计算子查询中的记录数

sql-server - 通过sql server连接传递租户id

Linux "Perf"工具无法在 docker 镜像中运行?