我在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与之连接?
答案 0 :(得分:1)
给您的容器起一个有意义的名称(或使用自动为其命名的服务),将它们放在相同的Docker网络上(根据您的情况,使用覆盖或桥接),然后将容器的名称用作主机名。
因此,如果您的数据库容器名为“ mydb”,则您的连接字符串将变为:
"Database": "Server=mydb,1433; Database=MyAwesomeDatabase; User=sa; Password=MyAwesomePassword; MultipleActiveResultSets=True;"