我正在寻找具有tld支持的多个nginx容器的最佳实践。请考虑以下docker-compose文件:
frontend:
build:
context: nginx/
hostname: frontend-docker
ports:
- "32777:80"
backend:
build:
context: nginx/
hostname: backend-docker
ports:
- "33777:80"
proxy:
image: nginx
hostname: proxy-docker
links:
- frontend
- backend
ports:
- "80:80"
说明如您所见,我可以在localhost:32777和localhost:33777上访问前端和后端,但是当我开始制作产品时,我想在site.com上访问前端,在backend.site上访问后端。 com。在这种情况下,proxy
容器将容纳server_name backend.site.com;
和server_name site.com
并为http://frontend
和http://backend
我的问题是我应该摆脱代理容器并将server_name
部分直接放入frontend
和backend
容器中,甚至建立一个名为{{ 1}}在那里web
。
通常,以这种方式拆分容器在配置,env变量,构建不同的映像等方面更合适。
答案 0 :(得分:1)
直接从外部访问frontend
和backend
容器很可能行不通,因为您不能多次将端口80绑定到主机。
如果frontend
和backend
是不同的应用程序,则可能需要使用不同的Dockerfile
来构建它们的图像。
在使用它的同时,您可能希望研究像https://traefik.io/这样的简单负载平衡解决方案,作为容器的前端。
但这可能对您当前的用例来说是过大的,并且您希望坚持使用上述配置。