У меня есть docker-compose yml с несколькими службами, которые находятся в определенной пользователем сети (в режиме моста). Я хочу подключить один из них к моей службе по умолчанию, чтобы открыть порт для внешнего мира.
Подводя итог, можно привести конкретный пример того, что я хочу сделать:
services:
service1:
networks:
- my_network
service2:
networks:
- my_network
- bridge
ports:
8080:8080
Как описано здесь Я попробовал следующее, но это привело к этой ошибке: ERROR: for app network-scoped alias is supported only for containers in user defined networks
.
networks:
my_network:
driver: bridge
bridge:
external: true
Я также попробовал решение, предложенное в Как подключиться к мостовой сети по умолчанию с docker-compose v2? , но вы не можете смешать комбинацию клавиш 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
каждый раз, когда хочу запустить свои службы.
Я знаю, что мой вопрос очень похож на этот: Как использовать хост-сеть и любую другую пользовательскую сеть вместе в Docker-Compose? , за исключением того, что я не хочу используйте режим хоста.
Можно ли одновременно подключить службу в определенной пользователем сети и мосту по умолчанию?