arj*_*bar 1 docker dockerfile docker-machine
我正在尝试创建一个简单的 docker 容器,从我启动它的目录运行 Rails 应用程序。
一切似乎都很好,除了当我运行容器并尝试通过 Docker Machine 提供的 IP 地址从 Windows 主机访问它时,它响应连接被拒绝错误消息。
我什至使用了 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
Run Code Online (Sandbox Code Playgroud)
我使用此命令构建图像
docker build -t rails_server .
Run Code Online (Sandbox Code Playgroud)
然后我使用这个命令运行它
docker run -d -p 80:80 rails_server
Run Code Online (Sandbox Code Playgroud)
这是我尝试访问该网页的内容:
curl $(docker-machine ip)
Run Code Online (Sandbox Code Playgroud)
这就是我得到的回报:
curl: (7) Failed to connect to 192.168.99.100 port 80: Connection refused
Run Code Online (Sandbox Code Playgroud)
这就是它给我的感觉:
这里的问题似乎是应用程序正在侦听 127.0.0.1:80,因此该服务不会接受来自容器外部的连接。您能否检查一下将 Rails 服务器修改为侦听 0.0.0.0 是否可以解决问题?
您可以使用-b以下标志来做到这一点rails s:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |