【问题标题】:Can't access service outside of Docker container无法访问 Docker 容器外的服务
【发布时间】:2016-10-03 03:10:48
【问题描述】:

我确定我做错了一些简单的事情,但我无法在我的 mac 上让 docker 正确公开端口。这就是我正在做的事情:

在主机上从头开始:

> rails -v
Rails 5.0.0.1
> rails new dt6
# ... rails creates a new app
> cd dt6

然后我将这个 Dockerfile 添加到 rails 应用的根目录:

FROM ruby:2.3.1

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp

EXPOSE 3000

然后我构建镜像并运行容器

> docker build -t dt6 .

> docker run --rm -p 3000:3000 dt6 rails s
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop

这看起来像是普通的 rails/puma “我准备好开始服务”消息了。但是,从主机上,我无法访问 rails 服务器:

> curl localhost:3000
curl: (52) Empty reply from server

我知道 docker 正在使用端口 3000 做一些事情,因为我收到了一个随机端口的不同消息:

> curl localhost:3001
curl: (7) Failed to connect to localhost port 3001: Connection refused

值得注意的是,rails 服务器正在运行。如果我连接到容器并从内部击中 rails 服务器,它可以工作:

> docker exec -it dt6_container bash
root@6af33aa9c43b:/myapp# curl localhost:3000
<!DOCTYPE html>
<html>
<head>
#... a normal html response from the rails server

TLDR:在 docker 容器中运行 rails 服务器,当我从主机访问服务器时得到一个空响应。如果我希望能够从外部向在该容器内运行的 Rails 服务器发出 http 请求,我做错了什么?

【问题讨论】:

  • 在我看来,你所做的在 Linux 中可以正常工作,但在 Mac 或 Windows 中却不行,它们使用(或多或少)虚拟机确实模仿了 Linux
  • viget.com/articles/how-to-use-docker-on-os-x-the-missing-guide curl $(boot2docker ip):49153 中提取(这是一个例子)
  • 您使用的是 Docker for Mac 还是 Docker Machine/Docker Toolbox?
  • 我正在使用 Docker for Mac

标签: docker dockerfile


【解决方案1】:

尝试在EXPOSE 3000 之后将CMD ["rails", "server", "-b", "0.0.0.0"] 添加到您的docker 文件中。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多