我是 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?
答案 0 :(得分:2)
我发现了我的问题。 解决方案是将docker作为生产而不是开发运行。
在 Dockerfile 中,而不是:
CMD ["bundle", "exec", "rails", "server"]
我改为:
CMD ["bundle", "exec", "rails", "server", "-e", "production"]
解决我的问题
答案 1 :(得分:1)