【发布时间】:2018-07-14 20:04:56
【问题描述】:
我有一个带有以下 Dockerfile 的 Rails 服务的简单映像:
FROM ruby:2.4.4
MAINTAINER sadzid.suljic@gmail.com
RUN apt-get update && apt-get install -y \
build-essential \
nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install
COPY . ./
EXPOSE 3000
CMD ["rails", "s", "-p", "3000"]
我构建了映像并使用以下命令运行了容器:
docker build -t chat/users .
docker run -P --name users_service chat/users
我在主机上有这个输出:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23716591e656 chat/users "rails s -p 3000" 6 minutes ago Up 5 minutes 0.0.0.0:32774->3000/tcp users_service
$ lsof -n -i :32774 | grep LISTEN
com.docke 32891 ssuljic 18u IPv4 0x41c034d5d4627f5f 0t0 TCP *:filenet-re (LISTEN)
com.docke 32891 ssuljic 19u IPv6 0x41c034d5d3beb9b7 0t0 TCP [::1]:filenet-re (LISTEN)
$ curl localhost:32774
curl: (52) Empty reply from server
当我在容器内运行 curl localhost:3000 时,我的 API 会得到正确的响应。
有人知道为什么我不能从我的主机访问容器吗?
我在这个版本中使用 Docker for Mac:
$ docker -v
Docker version 18.03.1-ce, build 9ee9f40
【问题讨论】:
标签: ruby-on-rails docker portforwarding