docker - 多个 docker nginx 容器或单个 nginx docker 容器
问题描述
我正在寻找具有 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 访问前端和后端,但是当我要访问 prod 时,我想访问 site.com 的前端和 backend.site.com 的后端。在这种情况下,proxy
容器会保存server_name backend.site.com;
并server_name site.com
创建反向代理到http://frontend
和http://backend
我的问题是我是否应该摆脱代理容器并将部件server_name
直接放入容器中,甚至构建一个称为容器的容器。frontend
backend
web
backend and frontend
一般来说,以这种方式拆分容器在配置、环境变量、构建不同的镜像等方面更合适。
解决方案
直接从外部寻址frontend
和backend
容器很可能不起作用,因为您不能多次将端口 80 绑定到主机。
如果frontend
并且backend
是不同的应用程序,您可能希望使用不同Dockerfile
的 s 构建它们的图像。
当我们在做的时候,你可能想看看简单的负载平衡解决方案,例如https://traefik.io/作为容器的前端。但对于您当前的用例来说,这可能有点过分了,您希望坚持使用上述配置。
推荐阅读
- ruby-on-rails - “要求”:无法加载此类文件“宝石”(LoadError)
- javascript - 为所有命令创建随机等待秒
- pandoc - 从 pandoc LaTex 输出中删除 \hypertarget
- java - 带有 lombok 注释的继承得到错误
- python - 散景图:输出文件正在附加而不是覆盖
- c++ - C ++写入实时excel图
- python - 在 Python 中最有效地迭代大量字典列表
- azure - DPS 演示的 MXChip 示例文件中缺少实用程序.h
- php - 仅设置影响到方法的路由控制器
- javascript - 使用箭头键时更改 jQuery 自动完成下拉菜单的背景颜色