繁体   English   中英

Docker容器正在运行,但无法在浏览器中查看

[英]Docker container running but can't view in browser

我是Docker的新手,正在尝试在Docker中运行ruby应用程序。 因此,我创建了一个可以正常运行的红宝石应用程序,还创建了一个映像和一个泊坞窗,当我运行并构建它们时,它运行得很好。 运行docker后,它显示为运行正常,我从docker inspect获取了一个IP,并在docker ps -a中将端口显示为3000。

当我在浏览器中打开IP:port时,我什么也看不到。

这是我的码头工人文件:

> 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 '。
对于``码头工人检查'',我得到的IP是 :``172.17.0.2''

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

新编辑

我发现Docker以tcp6(IPv6)的身份运行,如何将其配置为tcp?

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

Dockerfile中 ,而不是:

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

我改为:

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

解决了我的问题

在您的dockerfile中添加以下行:

EXPOSE 3000

另外,如果您希望可以从主机访问此应用程序,请使用-p标志运行。

请参阅“ 常规表单 ”以获取run文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM