docker - 多个 docker nginx 容器或单个 nginx docker 容器

标签 docker nginx containers

我正在寻找具有 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直接参与 frontendbackend容器,甚至构建一个名为 web 的容器持有backend and frontend那里。

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

最佳答案

寻址 frontendbackend直接来自外部的容器很可能无法工作,因为您不能多次将端口 80 绑定(bind)到主机。

如果 frontendbackend是不同的应用程序,您可能希望使用不同的 Dockerfile 构建它们的镜像s。

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

关于docker - 多个 docker nginx 容器或单个 nginx docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55690624/

相关文章:

angular - Kubernetes将系统变量添加到Dockers入口点

shell - ldconfig 返回非零代码 : 1

mysql - Docker compose 等待数据库服务初始化

docker - 让Apparmor在Docker容器上工作

Nginx 反向代理到 nextjs 和 react-admin

azure - 修改Azure App Linux服务的nginx.conf

c++ - 使用 == 运算符的自定义类比较 vector

php - Codeigniter 的 nginx 重写规则无法正常工作

linux - 无法以 root 身份登录 Oracle Linux Docker 容器

ios - 为什么 iOS Container 不再取代 work?