我在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
答案 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网络将您的容器桥接到网络。