Docker容器正在运行但无法在浏览器

时间:2017-05-10 16:06:42

标签: ruby ubuntu docker

我是 Docker 的新手,我正试图在docker中运行 ruby​​ 应用。 所以我创建了一个工作和运行良好的ruby应用程序,我还创建了一个图像和一个docker,当我运行并构建它们时它运行得很好。 在运行docker之后,它显示它正在运行没有问题,我从docker inspect得到一个IP,docker ps -a显示的端口为3000.

当我在浏览器上打开IP:端口时我什么都看不到。

这是我的泊坞文件:

> FROM ruby:latest 
> 
> # Set the working directory to /app WORKDIR /app
> 
> # Copy the current directory contents into the container at /app ADD . /app
> 
> RUN echo 'debconf debconf/frontend select Noninteractive' |
> debconf-set-selections RUN apt-get update \
>     && DEBIAN_FRONTEND=Noninteractive   apt-get install -y \
>         sqlite3 \
>         thin \
>         nodejs \
>         apt-utils \
>     && bundle install 
> # --no-install-recommends apt-utils sudo
> 
> 
> #RUN sudo -H cp config/initializers/rack_attack.rb config/initializers/rack_attack.rb
> 
> # Install any needed packages specified in requirements.txt
> # RUN pip install -r requirements.txt 
> EXPOSE 3000
> 
> CMD ["bundle",  "exec", "rails", "server"]

修改

我也尝试使用' Expose 3000 '并使用'-p'标志运行。
当我运行'docker ps -a'时,端口为:' 0.0.0.0:32768->3000/tcp '。
对于'docker inspect',我得到 IP :'172.17.0.2'

但是当我在浏览器中转到“http://172.17.0.2:3000/”时,我什么都没看到。

新编辑

  

我发现docker正在运行为tcp6(IPv6),我该怎么办?   配置它是tcp?

2 个答案:

答案 0 :(得分:2)

我发现了我的问题。 解决方案是将docker作为生产而不是开发运行。

Dockerfile 中,而不是:

CMD ["bundle",  "exec", "rails", "server"]

我改为:

CMD ["bundle",  "exec", "rails", "server", "-e", "production"]

解决我的问题

答案 1 :(得分:1)

在dockerfile中添加以下行:

EXPOSE 3000

此外,如果您希望从您的主机访问此应用,请使用-p标记运行。

参见" General form"对于run文档。