我正在尝试创建一个简单的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
这就是我的感受:
答案 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)