Dockerize-Rails应用程序curl:(7)无法连接到本地主机

时间:2019-06-01 22:13:11

标签: ruby-on-rails docker docker-image

我在Rails应用程序上有一个红宝石。它可以在我的Mac机器上使用。我想将其泊坞窗。

Docker文件在下面:

....
EXPOSE 3000

# Start the main process.
CMD ["rails", "server"]

我构建了该应用程序,并且运行正常。

$docker build -t my-rails-app .

Docker映像ID

$docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1f02e0e60da5        my-rails-app        "rails server"      5 minutes ago       Up 5 minutes        0.0.0.0:3000->3000/tcp   dazzling_hamilton

获取IP地址

$docker inspect 1f02e0e60da5 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

http请求无响应 $ curl 172.17.0.2:3000

curl: (7) Failed to connect to 172.17.0.2 port 3000: Operation timed out

3 个答案:

答案 0 :(得分:0)

更新Dockerfile

...
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

运行命令:

curl -X GET   http://localhost:3000

对我有用!

答案 1 :(得分:0)

为此更改您的CMD

CMD rails s -p 3000 -b '0.0.0.0'

您不需要获取docker ip,因为它已在localhost上公开,因此您可以这样做

curl localhost:3000

答案 2 :(得分:0)

您无法执行curl 172.17.0.2:3000的原因,因为此IP属于内部Docker网络容器。如果您将在同一个Docker Network中拥有另一个容器,那么应​​该可以。从不同的容器(微服务结构)中卷曲您的应用容器。

您的容器地址0.0.0.0:3000->3000/tcp,您需要按注释中所述调用localhost。 Docker网络将您的容器桥接到网络。