Связь между двумя док-контейнерами в сети

У меня есть сеть докеров между геосервером и postgres. Когда я делаю проверку докера container name, я вижу, что они связаны. Когда я запускаю контейнер геосервера, я могу пропинговать контейнер postgres, но когда я пытаюсь подключиться к базе данных postgres из контейнера геосервера, я получаю сообщение об ошибке

psql: не удалось перевести имя хоста postgres в адрес: имя или служба не известны

Вот пример моего docker-compose:

version: '2'
services:

postgres:
  image: kartoza/postgis:9.5-2.2
geoserver:
  image: geonode/geoserver
  hostname: geonode-geoserver
  links:
    - postgres:postgres
  ports:
    - "8181:8080"

Я знаю, что в сетях докеров файл /etc/hosts не заполняется. Как я могу включить доступ к базе данных из контейнера геосервера.


person kartoza-geek    schedule 29.09.2016    source источник


Ответы (3)


Служба geoserver, вероятно, запускается до того, как станет доступна служба postgres.

См. https://docs.docker.com/compose/startup-order/.

person dnephin    schedule 29.09.2016

Вы должны использовать определенную сеть для разрешения имен без ссылок. и используйте depends_on для запуска postgres перед геосервером.

person Sergio Puas    schedule 29.09.2016

в изменении определения службы геосервера:

  • постгрес: постгрес

to:

  • постгрес:картоза/постгис:9.5-2.2

Вам нужно сопоставить имя службы с именем изображения

person sophia    schedule 12.10.2016
comment
как связать работающий контейнер с изображением? Разве мы не используем изображение для создания контейнера, а затем связываем контейнеры - person kartoza-geek; 13.10.2016
comment
версия: '2' сервисы: постгрес: образ: картоза/постгис:9.5-2.2 геосервер: образ: геонода/геосервер имя хоста: геонода-геосервер ссылки: - postgres:postgres порты: - 8181:8080 - person sophia; 14.10.2016