我有一个docker-compose.yaml文件,该文件定义了一个名为mynetwork
的网络内部的数据库服务器的映像。我还为dotnet控制台应用程序定义了一个定义,该应用程序也使用networks
语法引用了相同的网络,并使用链接语法将服务结合在一起(不确定第二部分是否必要)。
这一切都很好。我使用docker-compose build
构建映像,并以分离模式运行数据库。然后,我可以运行控制台应用程序,并通过使用docker-compose中定义的名称引用数据库服务器来打开与数据库的连接。但是,只有使用--network
选项运行应用程序时,我才能这样做。我认为,通过在mynetwork
下为我的docker-compose文件的控制台应用程序组件指定networks
,它将“只是知道”在运行时加入适当的网络,而不是我每次都要指定(这使命令非常冗长)。
当我将.NET Core WebAPI托管为同一docker-compose
(也指定mynetwork)的一部分时,它可以正确加入网络,并且可以与数据库进行通信。这归咎于控制台应用程序的“一次性”特性吗?还是我被迫通过docker run
而不是docker-compose up
使用它的事实?