Как подключить Docker-контейнер Pact-Broker к локальной базе данных Postgresql?

Мой dockerfile выглядит следующим образом:

FROM phusion/passenger-ruby24:0.9.26

ENV APP_HOME=/home/app/pact_broker/
RUN rm -f /etc/service/nginx/down /etc/nginx/sites-enabled/default
COPY container /
RUN gem update --system
# USER app

COPY pact_broker/config.ru pact_broker/Gemfile pact_broker/Gemfile.lock $APP_HOME
# Update system gems for:
# https://www.ruby-lang.org/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/
RUN gem install bundler && \
    cd $APP_HOME && bundle install --deployment --without='development test'
COPY pact_broker/ $APP_HOME/
RUN chown -R app:app $APP_HOME

EXPOSE 80
CMD ["/sbin/my_init"]

Как я могу заставить этот контейнер использовать локальную установку postgresql?

1 ответ

Если на MAC OS -

По умолчанию Postgres работает на localhost, и если вы не делали с ним никаких изменений, то это должен быть localhost.

В нашем случае подключение Postgres к нашему контейнеру pact-broker означает, что контейнер будет взаимодействовать с нашим локальным.

Поэтому вместо "localhost" определите свой хост как "docker.for.mac.localhost", он должен работать.

  • Примечание: если вы используете другую ОС, отличную от MAC, и у них должно быть что-то подобное, вы можете проверить это, например "docker.for.win.localhost" для Windows*

Есть два способа доступа PostgreSQL на хосте из вышеуказанного контейнера:

1. Только на <HOST_IP>:<PostgreSQL_PORT>, если Docker-контейнер запущен в мостовой сети:

docker run -d <image_name>

PostgreSQL должен быть связан с <HOST_IP> или же 0.0.0.0 (который включает в себя <HOST_IP>).

2. Вкл <HOST_IP>:<PostgreSQL_PORT> (если PostgreSQL связан с <HOST_IP> или же 0.0.0.0) а также localhost:<PostgreSQL_PORT>, если Docker-контейнер запущен в сети хоста:

docker run --network host -d <image_name>

По умолчанию PostgreSQL связан с localhostВторой способ - универсальное решение.

Другие вопросы по тегам