не может связаться между docker контейнером - соединение отказано - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть стек из n сервисов, определенных в docker compose file:

version: "3.7"
services:
  db:
    ...
  backend:
    image: $IMAGE_DEV_BACKEND
    container_name: "backend"
    hostname: backend
    ports:
      - "8888:8080"
    depends_on:
      - db
    networks:
      - backend
  frontend:
    image: $IMAGE_DEV_FRONTEND
    container_name: "frontend"
    hostname: frontend
    depends_on:
      - backend
    networks:
      - backend
      - traefik_default
volumes:
  data:
networks:
  backend:
    driver: bridge
    external:
      name: backend
  traefik_default:
    driver: bridge
    external:
      name: traefik_default

Все контейнеры находятся в одной сети.

В приложении frontend spring у меня есть следующая конфигурация пружины:

backend.url=http://backend:8888, когда приложение front-end пытается подключиться к бэкэнду, которое я получаю

ERROR DefaultFormCommandBean:529 - Error while performing action "datastoreAction": I/O error on POST request for "http://backend:8888/oauth/token": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://backend:8888/oauth/token": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:674)

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

Что я могу сделать, чтобы он работал с именами контейнеров?

1 Ответ

1 голос
/ 12 февраля 2020

Попробуйте использовать backend.url=http://backend:8080. Порт 8888 используется для доступа к бэкэнду с вашего хост-компьютера, а 8080 - это фактический порт контейнера. Проверьте больше информации здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...