LINUX.ORG.RU

Docker-compose и сеть

 , ,


0

1
Ситуация следующая:

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

Я точно знаю, что можно заставить сервисы общаться через их имена, что бы писать не jdbc:mysql://172.17.0.1:3306/ А что то вроде jdbc:mysql://mysql:3306/

Решить вопрос наскоком не получилось, предложенные решения на Stack overflow (и иже с ним) или не завелись в моем случае или у меня лапки.

Может кто-то сталкивался уже с задачей подружить Spring и MySQL живущие в разных контейнерах, не через IP?

Буду благодарен за ссылку на какой ни будь HelloWorld для этой задачи.

Если в разных, то в одном docker-compose.yaml, создаём сеть

...
services:
  ...
  service1:
    hostname: service1.docker
    networks:
      custom_net:
        aliases:
          - service1.docker

networks:
  custom_net:

Второй docker-compose.yaml, используем созданную сеть:

services:
  ...
  service2:
    hostname: service2.docker
    networks:
      default:
        aliases:
          - service2.docker

networks:
  default:
    external:
      name: name_of_custom_net

И внутри этой сети будут резолвится service1.docker и service2.docker.

По памяти писал, но так точно работает через отдельную сеть и связкой hostname + alias.

vvn_black ★★★★★
()
Ответ на: комментарий от achilles_85

если контейнеры в одном docker-compose

Если в одном docker-compose, то можно просто по имени сервиса, работает:

services:
  postgres:
    ...
  engine:
    ...
    environment:
      DATABASE_URL: postgres://user:password@postgres:5432/database
vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от vvn_black

Да вот в том то и проблема, что по имени сервиса не завелось. Потому у меня возникла мысль, что могут быть какие-то подводные камни связанные, например, со спрингом.

Saivrem
() автор топика

Короче я осел.Коннектиться нужно именно по имени сервиса, а затык был в мапинге портов, я мапил внешний порд 3307 во внутрений 3306 А подрубиться из внутренней сети пытался все равно на 3307.

Внимательность наше все. Спасибо всем за участие и советы :)

Saivrem
() автор топика
Ответ на: комментарий от Saivrem

Да вот в том то и проблема, что по имени сервиса не завелось.

По имени контейнера, который нужно указать для требуемых сервисов. Параметр container_name.

Потому у меня возникла мысль, что могут быть какие-то подводные камни связанные, например, со спрингом.

Spring тут совсем не причём.

hummer
()
Ответ на: комментарий от hummer

Да там все оказалось банально) не в тот порт долбился. Но еще раз спасибо!

Saivrem
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.