我有一个docker-compose yml,其中几个服务位于用户定义的网络中(桥接模式)。我想在默认docker桥上的服务上连接一个,以便将端口暴露给外界。
总而言之,有一个我想做的具体例子:
services:
service1:
networks:
- my_network
service2:
networks:
- my_network
- bridge
ports:
8080:8080
如here所述,我尝试了以下操作,但导致此错误:ERROR: for app network-scoped alias is supported only for containers in user defined networks
。
networks:
my_network:
driver: bridge
bridge:
external: true
我还尝试了How to join the default bridge network with docker-compose v2?中提出的解决方案,但是您不能在docker compose中混合使用键盘network_mode: bridge
和关键字networks
。
我还尝试在docker-compose.yml中删除对默认网桥网络的引用,并在启动服务后将service2容器添加到默认网桥,例如:
docker-compose up
docker network connect bridge service2
这种方法有效,我可以从外界访问 service2 上的暴露端口,最后得到:
docker inspect service2
"Networks": {
"bridge": {
...
},
"my_network": {
...
}
}
但是我不想每次启动服务时都执行docker network connect bridge service2
。
我知道我的问题与这个问题非常相似:How to use the host network, and any other user-defined network together in Docker-Compose?,只是我不想使用主机模式。
有什么方法可以同时在用户定义的网络和默认网桥上连接服务?
答案 0 :(得分:1)
我认为您不必在默认的网桥网络上将端口从容器发布到您的计算机。