在一台主机上运行nginx后面的两个docker compose应用程序的最佳方法?
我有两个docker compose应用程序:在一台主机上运行nginx后面的两个docker compose应用程序的最佳方法?,nginx,docker,docker-compose,Nginx,Docker,Docker Compose,我有两个docker compose应用程序: a、 com b、 com 我想在同一台主机上运行它们,并放置一个nginx容器代理,将传入的请求路由到每个docker compose应用程序中的正确服务 我想我需要有一个单独的nginx容器与两个docker compose应用程序分开运行。我以前使用过,但是我的路由变得更复杂了,所以我现在想运行我自己的nginx实例 我不知道如何将这两个应用程序和nginx容器连接起来,使它们都能正常工作 当我docker运行我得到的nginx容器时:
- a、 com
- b、 com
- 我不知道如何将这两个应用程序和nginx容器连接起来,使它们都能正常工作
- 当我
我得到的nginx容器时:docker运行
,这表明我的应用程序主机名没有从nginx容器中解析在上游的“MY_container\u host\u NAME”中找不到主机
- 如果需要,我可以发布我的nginx配置,但这实际上是一个docker网络/最佳实践问题
您也可以考虑,每当部署新的服务时,或者当服务被缩放时,重新配置代理的简单方法。
请参阅“”,了解具体示例。我可以想出两个选项: 第一名: 在同一docker用户定义的网络中运行应用程序和nginx。为此,您需要首先创建一个用户定义的网络:
docker network create appnet
然后更改docker文件,将appnet网络用作外部网络(外部网络不会创建网络并使用现有网络)
秒:
创建两个名为appnet1和appnet2的用户定义网络,将a.com连接到appnet1,将b.com连接到docker compose中标记为外部网络的appnet2。然后启动nginx并将其连接到appnet1和appnet2
当docker运行nginx容器时,我得到:主机未在中找到
上游“MY_CONTAINER_HOST_NAME”,表示我的应用程序主机名
未从nginx容器中解析
请注意:用户定义的网络将提供内部DNS,因此您可以按容器名称调用同一网络上的容器
外部网络示例:
如果希望容器加入预先存在的网络,请使用外部选项:
networks:
default:
external:
name: my-pre-existing-network
Compose不会尝试创建名为[projectname]\u default的网络,而是查找名为my pre-existing network的网络,并将应用程序的容器连接到该网络感谢您的帮助。我真的很想学习如何手工操作来理解Docker是如何工作的。编写自己的nginx代理以在一台主机上管理两个compose应用程序的最佳方式是什么?