更新: 截至docker-compose文件版本3.5:
我遇到了类似的问题,通过在我的docker-compose.yml项目中进行一些小改动来解决它。
例如,我们有两个API:scoring和ner。Scoring API需要向ner API发送请求以处理输入请求。为了做到这一点,它们都应该共享同一个网络。
注意:每个容器都有自己的网络,在运行docker内部应用程序时会自动创建。例如,ner API网络将被创建为ner_default
,而scoring API网络将被命名为scoring_default
。此解决方案适用于版本:'3'。
在上述场景中,如果我的scoring API想要与ner API通信,那么我将添加以下行。这意味着每当我为ner API创建容器时,它就会自动添加到scoring_default网络中。
networks:
default:
external:
name: scoring_default
ner/docker-compose.yml
version: '3'
services:
ner:
container_name: "ner_api"
build: .
...
networks:
default:
external:
name: scoring_default
scoring/docker-compose.yml
version: '3'
services:
api:
build: .
...
我们可以通过以下命令看到上述容器现在都属于同一网络,该网络名为
scoring_default
:
docker inspect scoring_default
{
"Name": "scoring_default",
....
"Containers": {
"14a6...28bf": {
"Name": "ner_api",
"EndpointID": "83b7...d6291",
"MacAddress": "0....",
"IPv4Address": "0.0....",
"IPv6Address": ""
},
"7b32...90d1": {
"Name": "scoring_api",
"EndpointID": "311...280d",
"MacAddress": "0.....3",
"IPv4Address": "1...0",
"IPv6Address": ""
},
...
}