Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将Docker容器中运行的Flyway连接到Docker容器中运行的数据库?_Sql Server_Docker_Flyway - Fatal编程技术网

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

Sql server 如何将Docker容器中运行的Flyway连接到Docker容器中运行的数据库?,sql-server,docker,flyway,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};data

我们使用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容器。事实上,
docker compose
在这些术语中并没有添加太多内容,它只是自动化了几个步骤

要连接容器,您必须:

  • 创建新的用户定义网桥网络(完成一次):
    docker网络创建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>
    
    docker网络创建foo
    docker run-d--rm--name=my数据库--network=foo
    docker run-d--rm--name=my flyway--network=foo
    

  • 现在您可以使用
    server=my database

    从Flyway连接到SQL,谢谢,这解决了方程的一部分。另一个是使用环境变量将该名称输入Flyway。
    docker run-d--rm-e“SQL\u SERVER=my database”--name=my Flyway--network=foo
    抱歉让您久等了。。。我用shell脚本测试了一切。Flyway(我不是以分离模式启动,因为它是一次性的)似乎看不到网络:Flyway Community Edition 5.0.7 by Boxfuse错误:无法从数据库获取连接(jdbc:sqlserver://flyway:1433;databaseName=etrademark)用于用户“etrademark”:与主机飞行通道的TCP/IP连接,端口1433出现故障。错误:“flyway。验证连接属性。确保SQL Server实例正在主机上运行,并在端口接受TCP/IP连接。”您知道如何检查容器是否知道域名吗?我的错误是,我使用了网络名作为要连接的域名。我需要在我的JDBC连接字符串中使用Docker名称,在本例中是
    mydatabase