Docker组成了多个子网站

sun*_*ine 11 php mysql linux nginx docker

我使用Docker编写运行nginx+php+mysql环境,OS是centos 7.2,问题是关于一个主机上的多个子网站:

例如:
有一台主机,两个项目将运行该主机,在
命名project-aproject-b,
两个不同的docker-compose.yml项目,一个和项目-B exsist.

题:

当执行docker-compose up中的项目和项目B,并nginx+php+mysql环境中运行两个或一个?如果两个,占用了很多空间,如何解决这个问题呢?

添加: docker-compose.yml
version: '2'

services:

    nginx:
      container_name: nginx
      image: nginx
      ports:
        - 80:80
        - 443:443
      links:
        - php
      env_file:
        - ./.env
      working_dir: /usr/share/nginx/html   # should be `/usr/share/nginx/html/project-a` and `/usr/share/nginx/html/project-b` here?
      volumes:
        - ~/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
        - ~/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
        - ~/docker/www:/usr/share/nginx/html

    php:
      container_name: php
      image: fpm
      links:
        - mariadb
        - redis
      env_file:
        - ./.env
      volumes:
        - ~/docker/www:/usr/share/nginx/html

    mariadb:
      container_name: mariadb
      image: mariadb
      env_file:
        - ./.env
      volumes:
        - ~/opt/data/mysql:/var/lib/mysql

    redis:
      container_name: redis
      image: redis
Run Code Online (Sandbox Code Playgroud)

.ENV:
project-aproject-b有不同的DB_DATABASEAPP_KEY,其他项目都是相同的.

APP_ENV=local
APP_DEBUG=true
APP_KEY=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   # Here different.

DB_HOST=laravel.dev
DB_DATABASE=project-a   # Here different.
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=laravel.dev
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)

项目文件:
project-aproject-b具有相同的目录. 在此输入图像描述

网址:
project-a:aaa.xxxxxx.com
project-b:bbb.xxxxxx.com

项目文件夹 ::
project-a〜/ docker/www/project
project-b-a:〜/ docker/www/project-b

附属问题:

1,应working_dir/usr/share/nginx/html/project-name/usr/share/nginx/htmldocker-compose.yml文件?

2,如果working_dir/usr/share/nginx/html,我想docker-compose.yml文件具有相同的内容project-aproject-b吧?有没有任何其他项目进行修改?

3,如何将compose文件合并为一个?

ADD2:

项目常见的有: docker-compose.yml

version: '2'

services:

    nginx:
      container_name: nginx
      image: nginx

    php:
      container_name: php
      image: fpm

    mariadb:
      container_name: mariadb
      image: mariadb

    redis:
      container_name: redis
      image: redis
Run Code Online (Sandbox Code Playgroud)

project-a: docker-compose.yml和project-b除项目名称外是相同的.

version: '2'

services:

    nginx:
      external_links:
        - project-common:nginx
      ports:
        - 80:80
        - 443:443
      links:
        - php
      env_file:
        - ./.env
      working_dir: /usr/share/nginx/html/project-a
      volumes:
        - ~/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
        - ~/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
        - ~/docker/www/project-a:/usr/share/nginx/html/project-a


    php:
      external_links:
        - project-common:php
      links:
        - mariadb
        - redis
      env_file:
        - ./.env
      volumes:
        - ~/docker/www:/usr/share/nginx/html/project-a


    mariadb:
      external_links:
        - project-common:mariadb
      env_file:
        - ./.env
      volumes:
        - ~/opt/data/mysql:/var/lib/mysql


    redis:
      external_links:
        - project-common:redis
Run Code Online (Sandbox Code Playgroud)

str*_*rgo 1

您不需要在不同的容器中运行 nginx 和 php-fpm。(如果您的项目共享相同的 php 版本)

您将 fpm 作为服务运行,并在同一个容器中以守护进程模式关闭运行 nginx。

然后你进入 nginx 配置并设置多个子域。

然后根据您的子域设置设置数据卷/共享文件夹。

因此,您有一个服务多个项目的 nginx/fpm 实例,以及一些其他数据库/服务容器