如何将pact-broker docker容器连接到本地postgresql数据库?

时间:2018-03-29 18:52:36

标签: postgresql docker redhat pact-broker

我的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的本地安装?

2 个答案:

答案 0 :(得分:0)

有两种方法可以从上面的容器访问主机上的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,因此第二种方式是通用解决方案。

答案 1 :(得分:0)

如果在MAC OS上-

默认情况下,Postgres可在localhost上运行,并且如果您未对此进行任何更改,则它必须是localhost。

我们的案例是将Postgres与我们的pact-broker容器连接在一起,这意味着该容器将与我们的本地代理进行交互。

因此,将您的主机定义为“ docker.for.mac.localhost”,而不是“ localhost”。

  • 注意:如果您使用的是非diff操作系统,则MAC必须与之相同,您可以在Windows上检查类似“ docker.for.win.localhost”的内容*