gpt4 book ai didi

Docker:在 docker 中运行两个 Web 应用程序时面临的问题

转载 作者:行者123 更新时间:2023-12-02 19:42:25 25 4
gpt4 key购买 nike

我在 docker 中运行两个 Web 应用程序。为此,我为每个应用程序有两个物理文件夹。然后我为此创建了两个图像。同时,我为这两个应用程序公开了 80 端口。当我尝试再次将这些端口映射到 80 时,为了运行第二个应用程序,它表示端口已经绑定(bind)。谁能告诉如何进行。

我在 nginx Web 服务器中运行这两个应用程序。

我正在尝试了解 nginx 反向代理概念。这是两个应用程序都可以监听同一端口的方法。有人可以说清楚我需要做什么和所有更改。

最佳答案

您公开端口 80,但不必将其映射到主机端口。

只有您的 nginx 在端口 80 上启动。

然后它的 nginx 配置将代理传递回两个正在运行的容器(每个应用程序一个),每个容器都暴露它们的端口 80(但未映射到主机上)

首先,在运行 nginx 时链接 nginx 上的这两个容器:

docker run -it -d --name nginx.cont -p 80:80 \
--link app1.cont:nginx.app1.cont \
--link app2.cont:nginx.app2.cont \
nginx

然后,确保您的 nginx 配置是引用这两个应用程序:
    location /app1/ {
proxy_pass https://nginx.app1.cont:80/;
}
location /app2/ {
proxy_pass https://nginx.app2.cont:80/;
}

整洁的部分是:
  • 你总是反向代理回到端口 80:每个应用程序的每个容器都充当它们自己的服务器,每个容器都使用它们的端口 80(主机上没有冲突,因为你不引用主机,你直接引用应用程序容器)
  • 您总是使用固定名称(此处为“nginx.app1.cont”或“nginx.app2.cont”),因为在运行时,当您运行 nginx 时,该名称会映射到应用程序容器的实际名称(您首先启动的名称)。
  • 关于Docker:在 docker 中运行两个 Web 应用程序时面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644587/

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