我的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的本地安装?
答案 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”。