如何使2个容器与sql server和dotnet app相互通信?

时间:2019-05-09 13:44:14

标签: linux docker azure-devops

我在Azure DevOps管道中具有以下项目布局。

在托管的Ubuntu代理上:

(a)容器“ A”正在docker容器(mcr.microsoft.com/mssql/server)内运行mssql服务器,该容器将端口1433暴露给守护程序

(b)容器“ B”包含所有构建了dotnet核心应用程序的回购文件。 此容器还包含数据库迁移文件(.cs文件)。

使用run命令启动容器B,并且入口点按以下顺序运行2个脚本:

1)处理数据库的创建和迁移 2)运行项目:与数据库通信的后端api

dotnet项目通过此ConnectionString与数据库通信:

"Database": "Server=localhost,1433; Database=MyAwesomeDatabase; User=sa; Password=MyAwesomePassword; MultipleActiveResultSets=True;"

在第二步中,容器B暴露了端口55111,以针对API运行测试。

管道也包含其他操作,但是这些与我的问题有关。
如何使这两个容器正确通信,以便在容器A上完成数据库迁移,并使容器B中的API与之连接?

1 个答案:

答案 0 :(得分:1)

给您的容器起一个有意义的名称(或使用自动为其命名的服务),将它们放在相同的Docker网络上(根据您的情况,使用覆盖或桥接),然后将容器的名称用作主机名。

因此,如果您的数据库容器名为“ mydb”,则您的连接字符串将变为:

"Database": "Server=mydb,1433; Database=MyAwesomeDatabase; User=sa; Password=MyAwesomePassword; MultipleActiveResultSets=True;"