Доступ к другой службе по ее URL-адресу из сети docker-compose

#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 ).