Весенняя загрузка + docker + в остальных шаблонах соединения отказано - PullRequest
0 голосов
/ 30 марта 2020

У меня есть две службы, весенняя загрузка docker, и когда я пытаюсь установить связь с шаблоном отдыха, я получаю java. net .ConnectException: соединение отклонено (соединение отклонено)

URL-адрес http://localhost: 8081 / api / v1 / package / 250Mbps

Сервис 1 docker -compose.yml:

product_catalogue_service:
image: openjdk:8-jdk-alpine
ports:
  - "8081:8081"
volumes:
  - .:/app
working_dir: /app
command: ./gradlew bootRun
restart: on-failure

Сервис 2 docker -compose.yml :

order_service:
image: openjdk:8-jdk-alpine
ports:
  - "8083:8083"
volumes:
  - .:/app
working_dir: /app
command: ./gradlew bootRun
restart: on-failure

Остальные URL шаблона, и он работает, когда я запускаю проект 2 из IntelliJ: http://localhost: 8081 / api / v1 / package / 250Mbps

Когда я запускаю docker ps, имя первой службы: productcatalogueservice_product_catalogue_service_1

Я попытался использовать это вместо localhost - исключение неизвестного хоста.

Вместо этого я также попытался использовать «product_catalogue_service_1», также неизвестное исключение хоста, и наконец я попробовал "product_catalogue_service" также неизвестное исключение хоста.

Есть идеи?

1 Ответ

0 голосов
/ 30 марта 2020

По умолчанию docker -compose создает сеть между вашими контейнерами и назначает имя службы в качестве имени хоста.

Таким образом, вы можете достичь product_catalog_service из order_service следующим образом: http://product_catalog_service:8081/api/v1/package/250Mbps

Теперь из вашего поста видно, что у вас есть два разных файла docker -compose.yml, по одному для каждой службы. В этом случае каждый контейнер живет в своей собственной сети (созданной docker -compose), и они не могут видеть друг друга, по крайней мере по умолчанию.

Честно говоря, я никогда не пытался подключиться два контейнера, созданные из двух разных docker -композитных файлов. Я всегда создаю один файл docker -compose.yml, помещаю туда все мои службы и позволяю docker -compose управлять сетью между ними.

Используя один docker -compose.yml

version: ...
services:
  product_catalogue_service:
    image: openjdk:8-jdk-alpine
    ports:
      - "8081:8081"
    volumes:
      - .:/app
    working_dir: /app
    command: ./gradlew bootRun
    restart: on-failure
  order_service:
    image: openjdk:8-jdk-alpine
    ports:
      - "8083:8083"
    volumes:
      - .:/app
    working_dir: /app
    command: ./gradlew bootRun
    restart: on-failure

И последнее: этот ответ очень подробно объясняет, почему localhost:8081 не работает из вашего order_service контейнера.

...