Docker:在Docker中运行两个Web应用程序时遇到的问题

我正在Docker中运行两个Web应用程序。 为此,我有两个物理文件夹为每个应用程序。 然后我为此创build两个图像。 同时,我正在为两个应用程序公开端口80。 当我试图将这些端口再次映射到80,然后运行第二个应用程序它说端口已经绑定。 任何人都可以告诉如何继续。

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

我想了解nginx反向代理的概念。 这两个应用程序都可以通过它来听同一个端口。 有人可以让我有点清楚我需要做什么和所有的变化。

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

只有你的nginx从端口80开始。

然后,它的nginxconfiguration将代理回传给两个正在运行的容器(每个应用程序一个),每个容器暴露其端口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 

然后,你确定你的nginxconfiguration是引用这两个应用程序:

  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,映射到应用程序容器的实际名称首先开始)。