#docker #docker-compose
#docker #docker-compose
Вопрос:
Я размещаю 3 службы, используя docker-compose.
version: '3.3'
services:
service-a:
container_name: service-a
network_mode: default
ports:
- 8001:8001
- 8080:8080
service-b:
container_name: service-b
network_mode: default
ports:
- 8180:8080
links:
- service-a:srv_a
service-api:
container_name: service-api
environment:
- SERVER_URL=http://localhost:8180/myserver
- 8001:8001
links:
- service-b: srv_b
Однако service-api, который является приложением spring boot, не может получить доступ к
служба-b, несмотря на ссылку.
Я могу сделать это при использовании браузера.
Что я могу сделать, чтобы выяснить причины отсутствия подключения?
Должна ли ссылка каким-либо образом использоваться в переменной server_url?
Ответ №1:
Каждый контейнер Docker имеет свой собственный IP-адрес. С точки зрения контейнера service-api, localhost
разрешите использовать его собственный IP-адрес.
Docker-compose предоставляет вашим контейнерам возможность разрешать IP-адреса других контейнеров из имен служб docker compose.
Попробуйте:
service-api:
environment:
- SERVER_URL=http://service-b:8080/myserver
обратите внимание, что вам нужно подключиться к внутреннему порту контейнера ( 8080
), а не к соответствующему порту, опубликованному на хосте docker ( 8180
).