Rails应用程序泊坞窗容器不能从Windows主机访问

我试图做一个简单的docker容器,从我启动它的目录运行Rails应用程序。

一切似乎没有问题,除非我运行容器,并试图从我的Windows主机在Docker机器给我的IP地址访问它,它回应连接拒绝错误消息。

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

这是我的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 

我使用这个命令build立图像

 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 

这就是我感受到的:

在这里输入图像说明

这里的问题似乎是应用程序正在监听127.0.0.1:80,所以该服务将不接受来自容器外的连接。 你可以检查,如果修改轨服务器听0.0.0.0问题解决?

你可以使用rails s -b标志来做到这一点:

 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 -b 0.0.0.0 -p 80 EXPOSE 80 

端口只暴露在运行docker的vm里面。 您还必须将vm的端口80暴露给本地机器,以便连接到本地机器。 我认为最好的办法是让你的容器被聆听到一个像7070这样的可选端口,然后使用一个简单的nginx代理传递将内容提供给外部(在端口80上监听)