docker - 运行多个网站-Docker Compose

标签 docker nginx docker-compose dockerfile

我有一个看起来像这样的docker-compose.yml文件

version: "3.0"

volumes: 
  dbdata:
  .:

services:
  api:
    build:
      context: ./api
      args:
        - APP_NAME=${APP_NAME}
      dockerfile: dockerfile
    depends_on:
      - database
      - webserver
    volumes: 
      - ./api:/usr/local/share/${APP_NAME}

  database:
    image: mysql:5.7
    volumes:
      - ./dbdata:/var/lib/mysql
    restart: always
    ports:
      - ${COMPOSE_DB_PORT}:3306

  webserver:
    build:
      context: .
      dockerfile: webserver.dockerfile
    working_dir: "/usr/local/share/${APP_NAME}"
    volumes: 
      - ./api:/usr/local/share/${APP_NAME}
    restart: always
    ports:
      - ${COMPOSE_APP_PORT}:80

它有3个服务。网站,数据库和Web服务器可以正常工作。

现在我有另一个单独的Web项目是CMS,它使用与API项目相同的数据库,并且我想将其添加到该docker compose文件中,但是我不知道如何配置Web服务器服务以处理来自所述的请求2个网站。我应该为cms添加另一个Web服务器吗?

我在Google上搜索,但找不到清晰的东西,大多数结果都使用了我不熟悉的旧docker-compose版本。

提前致谢。

最佳答案

通常,您将有一个单独的Web服务器,该服务器公开并发布自己的端口(而不是80)。

您将拥有一个专用的侦听器(通常为NGiNX)来确保反向代理,以便根据查询的路径或端口将查询重定向到正确的Web服务器。

http://www.bogotobogo.com/DevOps/Docker/images/Docker-compose-reverse-proxy-nginx/nginx-reverse-proxy-pic.png通过K Hong

例如,参见“Docker compose : NGINX reverse proxy with multiple containers

关于docker - 运行多个网站-Docker Compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849096/

相关文章:

docker - 在 docker hub 中自动构建期间需要身份验证错误

java - 如何打包具有多个入口点的 Java 应用程序

ssl - Nginx 设置多个域与单个 ssl 证书到相同的上游

php - 新的 laravel 安装在 nginx 服务器(Ubuntu)中不起作用

php-fpm 的 Nginx 错误

node.js - Docker 镜像构建但在浏览器中看不到

linux - 同一台机器上的两个版本的 Docker 数据卷?

node.js - 如何在扩展 (node.js) docker 图像上添加自定义 CA 证书

Docker 容器未启动,因为 rabbit 磁盘空间不足

docker - Docker容器-端口设置