gpt4 book ai didi

docker - 如何在 nginx 的上游服务器中使用容器名称解析到其 IP?

转载 作者:行者123 更新时间:2023-12-02 21:16:27 27 4
gpt4 key购买 nike

我在主机上运行 2 个 Docker 容器。在我的第一个容器中,我是这样启动的:

docker run -d --name site-a -p 127.0.0.1:3000:80 nginx

这会将端口 80 映射到主机的端口 3000。它还有一个名为 site-a 的名称。 ,我想在另一个容器中使用它。

然后在我的另一个容器中,这是一个主要的反向代理容器,我将 nginx 的配置配置为让上游指向第一个容器( site-a ):
upstream my-site-a {
server site-a:80;
}

然后我以这种方式运行反向代理容器:
docker run -d --name reverse-proxy -p 80:80 nginx

这样我的反向代理容器将从 site-a 提供服务容器。

但是,这里有两个问题:
  • 当我使用 server site-a:80; 时,我的 nginx 配置中的上游不起作用.我怎样才能得到
    nginx 将别名“site-a”解析为 site-a 的 IP容器?
  • 在启动站点-a 容器时,我在 here 处进行了回答。
    并将其绑定(bind)到主机的 3000 端口:-p 127.0.0.1:3000:80这是必要的吗?
  • 最佳答案

    为了使您的容器可以通过它们的名称相互访问,您需要将它们添加到同一个网络。

    首先使用以下命令创建一个网络:

    docker network create my-network

    然后,在运行容器时,添加 --network像这样的标志:
    docker run -d --name site-a -p 127.0.0.1:3000:80 --network my-network nginx

    当然,您需要对两个容器执行相同的操作。

    根据您的第二个问题,无需使用 -p 映射主机上的端口。标记,只要您不想联系 site-a的容器直接来自您的主机。

    当然你还是需要使用 -p在反向代理容器上标记以使其可访问。

    关于docker - 如何在 nginx 的上游服务器中使用容器名称解析到其 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50666661/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com