首页 > 解决方案 > 多个 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://frontendhttp://backend

我的问题是我是否应该摆脱代理容器并将部件server_name直接放入容器中,甚至构建一个称为容器的容器。frontendbackendwebbackend and frontend

一般来说,以这种方式拆分容器在配置、环境变量、构建不同的镜像等方面更合适。

标签: dockernginxcontainers

解决方案


直接从外部寻址frontendbackend容器很可能不起作用,因为您不能多次将端口 80 绑定到主机。

如果frontend并且backend是不同的应用程序,您可能希望使用不同Dockerfile的 s 构建它们的图像。

当我们在做的时候,你可能想看看简单的负载平衡解决方案,例如https://traefik.io/作为容器的前端。但对于您当前的用例来说,这可能有点过分了,您希望坚持使用上述配置。


推荐阅读