Sql server 如何将Docker容器中运行的Flyway连接到Docker容器中运行的数据库?
我们使用Microsoft SQL Server作为数据库,并使用Flyway进行管理。现在,我想通过在Docker中启动SQL Server和在我自己的Docker容器中启动Flyway来测试Flyway脚本,该容器包含所有配置和所有Flyway数据库脚本(迁移) 据我所知,不可能在Flyway配置文件中使用环境变量。理想情况下,这是可能的: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
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
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
。