Linux 如何使用sql server和dotnet应用程序使两个容器相互通信?

Linux 如何使用sql server和dotnet应用程序使两个容器相互通信?,linux,docker,azure-devops,Linux,Docker,Azure Devops,我在Azure DevOps管道中有以下项目布局 在托管的Ubuntu代理上: 容器“a”正在docker容器mcr.microsoft.com/mssql/server内运行mssql服务器,该容器向守护进程公开端口1433 b容器“b”包含所有repo文件,其中构建了dotnet核心应用程序。 此容器还包含数据库迁移文件.cs文件 容器B由run命令启动,入口点按以下顺序运行2个脚本: 1处理数据库的创建和迁移 2运行项目:一个与数据库通信的后端api dotnet项目通过此Connecti

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

在托管的Ubuntu代理上:

容器“a”正在docker容器mcr.microsoft.com/mssql/server内运行mssql服务器,该容器向守护进程公开端口1433

b容器“b”包含所有repo文件,其中构建了dotnet核心应用程序。 此容器还包含数据库迁移文件.cs文件

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

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

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

"Database": "Server=localhost,1433; Database=MyAwesomeDatabase; User=sa; Password=MyAwesomePassword; MultipleActiveResultSets=True;"
在第二个步骤中,容器B公开端口55111,用于运行针对API的测试

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

根据您的情况,为您的容器指定一个有意义的名称或使用服务,这些服务会自动命名容器,并将它们放在同一Docker网络覆盖层或网桥上,并使用容器的名称作为主机名

因此,如果您的db容器名为mydb,那么您的连接字符串将变成:


数据库:Server=mydb,1433;Database=MyAwesomeDatabase;用户=sa;Password=MyAwesomePassword;MultipleActiveResultSets=True

容器名称是在Azure DevOps管道中命名的,但解决这个问题的线索是根据mssql容器服务器的名称命名数据库服务器=mydb!这是最大的帮助。我为集装箱通信创建了一个docker桥网络,现在一切看起来都很好!很高兴听到,艾尔·弗雷德!