Как получить доступ к сервису Postgres из дочернего Docker-контейнера в Gitlab-CI?Как получить доступ к IP-адресу службы Postgres или общего бегуна Gitlab? - PullRequest
0 голосов
/ 22 декабря 2018

Я установил сборку gitlab-ci с архитектурой, показанной ниже.

architecture.

Контейнер слушателя не может связаться с контейнером postgres, используя имя хоста, ' postgres '.Имя хоста не распознано.Как может контейнер слушателя взаимодействовать с экземпляром базы данных postgres?

В документации рекомендуется настроить экземпляр postgres как службу в .gitlab-cy.yml .Задания CI, определенные в .gitlab-ci.yml , могут подключаться к экземпляру postgres через имя службы ' postgres '.

Контейнеры tusd , minio и listener создаются в процессе docker-compose, запускаются внутри pytest CI работа.Контейнер listener записывает информацию обратно в базу данных postgres.

Впоследствии я подумал об использовании IP-адреса службы postgres вместо имени хоста.В рамках задания сборки Pytest CI я попытался определить IP-адрес базы данных postgres, используя следующую последовательность команд bash:

  • export DB_IP = "$ (docker inspect -f '{{range.NetworkSettings.Networks}} {{. IPAddress}} {{end}} 'postgres) "* ​​1035 *
  • echo" АДРЕС БД IS IS $ DB_IP "

Однако postgres не распознаетсякак контейнер.

Как определить IP-адрес службы postgres?Или я могу использовать IP-адрес общего бегуна?Как мне это определить?

У кого-нибудь есть идеи?

Обновление 11/1/2019 Решено путем перемещения всех служб в файл docker-compose, чтобы они могли общаться друг с другом.Это включает в себя контейнер postgres и т. Д. ... После некоторого рефакторинга при инициализации тестовой среды тесты теперь вызываются с помощью команды run docker-compose.

Теперь можно успешно запускать тесты с использованием gitlab-shared runner…

...