Предположим, у меня есть 2 контейнера докеров: (A) shinyapptest
- это интерфейс, который должен взаимодействовать с (B) testapi
и быть доступным для внешнего мира.
Для этого я создал сеть backend
, выполнив следующую команду:
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 backend
Затем shinyapptest
делает свои вызовы API для "http://192.168.0.1:3098
.
Чтобы все заработало, я написал следующее docker-compose
:
version: '3.7'
services:
shinyapptest:
container_name: testshiny
image: testshiny
restart: unless-stopped
networks:
- frontend
- backend
ports:
- 80:3838
testapi:
container_name: testapi
image: testapi
restart: unless-stopped
networks:
- backend
ports:
- 3098:3098
networks:
backend:
external:
name: backend
frontend:
external:
name: frontend
Это правильно?По сути, я хочу, чтобы (A) имел доступ к (B), а внешний мир имел доступ к (A), но не (B).Если это правильно, как мне создать сеть frontend
?Прямо сейчас, если я пытаюсь запустить docker-compose up
, я получаю эту ошибку, потому что сеть не существует:
$ docker-compose up
ERROR: Network frontend declared as external, but could not be found. Please create the network manually using `docker network create frontend` and try again.