无法连接到本地主机上的 Rails docker 容器

ada*_*ott 5 ruby-on-rails docker

我无法从本地计算机访问我的容器化 Rails 应用程序。我将此快速入门指南作为模板,并对 gemfile 和 gemfile.lock 的路径进行了一些调整快速入门指南继续介绍 docker-compose,但我想尝试在没有它的情况下访问该应用程序,以便在继续之前熟悉这些流程。

这是我的 dockerfile:

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile ./Gemfile
COPY Gemfile.lock ./Gemfile.lock
RUN gem install bundler -v 2.0.1
RUN bundle install
COPY . /myapp

# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000:3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

这是入口点文件:

#!/bin/bash
set -e

# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid

# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"

Run Code Online (Sandbox Code Playgroud)

我能够成功构建并运行该映像,但是当我尝试访问 0.0.0.0:3000 时,出现无法连接错误。在此输入图像描述

我还附上了我的应用程序目录结构的屏幕截图,Dockerfile 和入口点位于根目录。

一件看起来奇怪的事情是,当我尝试运行容器的日志时,我没有得到任何输出,但是当我关闭容器时,我看到了启动日志。不知道为什么会这样。

我正在运行 docker 桌面 2.1.0.3。非常感谢任何想法/帮助。

Vas*_*nov 2

仅在 dockerfile 中使用EXPOSE 3000。运行容器ror,并将端口从新的 docker 镜像映射到本地主机<image>

docker run -d --name ror -p 3000:3000 <image>
Run Code Online (Sandbox Code Playgroud)

现在你应该能够访问localhost:3000