无法从Windows主机访问Rails app docker容器

时间:2016-07-28 15:49:54

标签: docker dockerfile docker-machine

我正在尝试创建一个简单的docker容器,它从我启动它的目录中运行Rails应用程序。

除非我运行容器并尝试从我的Windows主机以Docker Machine提供给我的IP地址访问它时,所有内容似乎都很好,它会响应连接被拒绝错误消息。

我甚至使用Nginx Dockerfile作为参考,因为Nginx Dockerfile实际上构建了一个可供我使用的容器。

到目前为止,这是我的Dockerfile:

FROM ruby:2.3.1

RUN gem install rails && \
apt-get update -y && \
apt-get install -y nodejs


VOLUME ["/web_app"]
ADD . /web_app
WORKDIR /web_app

RUN bundle install

CMD rails s -p 80

EXPOSE 80

我使用此命令构建图像

docker build -t rails_server .

然后我使用此命令运行它

docker run -d -p 80:80 rails_server

以下是我尝试访问该网页的内容:

curl $(docker-machine ip)

这就是我的回忆:

curl: (7) Failed to connect to 192.168.99.100 port 80: Connection refused

这就是我的感受:

enter image description here

2 个答案:

答案 0 :(得分:2)

此处的问题似乎是应用程序正在侦听127.0.0.1:80,因此该服务将不接受来自容器外部的连接。您是否可以检查是否修改了rails服务器以侦听0.0.0.0问题?

您可以使用-b的{​​{1}}标记来执行此操作:

rails s

答案 1 :(得分:0)

该端口仅暴露于运行内部docker的vm。您还必须将vm的端口80暴露给本地计算机,以便它可以连接到它。我认为最好的方法是让你的容器被监听到7070之类的可选端口,然后使用简单的nginx代理传递将内容提供给外部(监听端口80)