我有一个 docker-compose yml,其中有几个服务位于用户定义的网络中(在桥接模式下)。我想在默认 docker 网桥上连接我的服务,以便向外界公开一个端口。
总而言之,有一个我想要做的具体例子:
services:
service1:
networks:
- my_network
service2:
networks:
- my_network
- bridge
ports:
8080:8080
Run Code Online (Sandbox Code Playgroud)
如此处所述,我尝试了以下操作,但导致此错误:ERROR: for app network-scoped alias is supported only for containers in user defined networks。
networks:
my_network:
driver: bridge
bridge:
external: true
Run Code Online (Sandbox Code Playgroud)
我还尝试了如何使用 docker-compose v2 加入默认网桥网络中提出的解决方案?,但您不能在 docker compose 中混合使用关键字network_mode: bridge和关键字networks。
我也尝试在docker-compose.yml中去掉对默认网桥网络的引用,并在启动服务后将我的service2容器添加到默认网桥中,例如:
docker-compose up
docker network connect bridge service2
Run Code Online (Sandbox Code Playgroud)
这种方法有效,我可以从外部访问我在service2上暴露的端口,我最终得到:
docker inspect service2
"Networks": {
"bridge": {
...
}, …Run Code Online (Sandbox Code Playgroud)