我有一个服务器应用程序需要几分钟才能完全启动并准备好处理请求。我想让容器在知道它已经启动的情况下使用NGINX负载均衡器注册自己,但我不知道如何确定分配给容器的端口docker(我用docker run启动了很多这些 - P)。有什么想法吗?
谢谢,
伊恩
答案 0 :(得分:0)
默认情况下,您无法从容器内部与docker守护程序通信,并且您不应该尝试。从容器的角度来看,它正在端口80
上运行一个进程,或者是webapp的默认进程。
要确定分配给容器的端口,您可以使用运行容器的主机的docker port
或docker inspect
命令。
docker port my_webapp_1
这将返回容器的映射端口列表。
docker inspect my_webapp_1
这将返回一个json,您可以在其中找到NetworkSettings
,其中列出了容器的所有端口以及它们映射到的主机的哪些端口。
您可以运行一个额外的流程,从docker port
或docker inspect
读取此数据并更新您的nginx配置。
答案 1 :(得分:0)
您可以使用容器内的hostname
(等于容器ID)并将其发送给主机。然后,主机将使用该主机名上的docker inspect
来获取端口。