多个docker-compose部署环境,共用一个容器实现。

需求:要同事运行两个不同版本的php,在不同的docker-compose中。

  • 目录结构:
> ll
lemp
zero
  • 查看已有docker网桥
> docker network ls
NETWORK ID          NAME                           DRIVER              SCOPE
177883bcb6c8        bridge                         bridge              local
  • 创建自己的网桥
> docker network create --driver my_custom
> docker network ls
NETWORK ID          NAME                           DRIVER              SCOPE
177883bcb6c8        bridge                         bridge              local
f9ad97f07ec8        my_custom                      bridge              local
  • lemp项目docker-compose.yml文件内容
version: '3'

networks:
  my_custom:
  external: true

services:
  d_nginx:
    container_name: c_nginx
    env_file:
      - ./env_files/nginx-web.env
    image: nginx:1.12.1-alpine
    ports:
      - '80:80'
      - '81:81'
    links:
      - d_php
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/certs:/etc/nginx/certs
      - ./nginx/logs:/var/log/nginx/
      - ./www:/var/www/html
      - ../zero/www:/var/www/html/zero
    networks:
      - my_custom

  d_php:
    container_name: c_php
    image: registry.cn-zhangjiakou.aliyuncs.com/old-sys/mokan-php:v7.1.23-01
    env_file:
      - ./env_files/php-web.env
    volumes:
      - ./www:/var/www/html
      - ./php/config/custom-php.ini:/usr/local/etc/php/conf.d/custom-php.ini
      - ./php/config/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ./php/supervisor:/etc/supervisor.d
      - ./php/composer/2.2.0/composer.phar:/usr/local/bin/composer
      - ./php/crontabs:/var/spool/cron/crontabs
    command: supervisord --nodaemon
    networks:
      - my_custom

  d_mysql:
    container_name: c_mysql
    image: mysql:5.7
    ports:
      - '3307:3306'
    env_file:
      - ./env_files/mysql-web.env
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
    networks:
      - my_custom

  d_redis:
    container_name: c_redis
    env_file:
      - ./env_files/redis-web.env
    image: redis:4.0-alpine
    ports:
      - '6381:6379'
    volumes:
      - ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - my_custom

  d_node:
    container_name: c_node
    image: node:12-alpine
    volumes:
      - ./www:/var/www/html
    command: ['tail', '-f', '/dev/null']
    networks:
      - my_custom
  • zero项目docker-compose.yml文件内容
version: '3'

networks:
  my_custom:
    external: true

volumes:
  common_dir:
    external: true

services:
  d_zero:
    container_name: c_zero
    image: box171597/php-zero:8.1.12
    volumes:
      - ./www:/var/www/html/zero
      - ./php/config/custom-php.ini:/usr/local/etc/php/conf.d/custom-php.ini
      - ./php/config/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ./php/supervisor:/etc/supervisor.d
      - ./php/composer/2.4.4.phar:/usr/local/bin/composer
      - ./php/crontabs:/var/spool/cron/crontabs
    command: supervisord --nodaemon
    networks:
      - my_custom

  d_node_zero:
    container_name: c_node_zero
    image: node:16.13.2-alpine
    volumes:
      - ./www:/var/www/html/zero
    command: ['tail', '-f', '/dev/null']
    networks:
      - my_custom
  • 通过lemp下nginx容器访问zero项目的php容器的配置文件
server {
    listen 90;
    listen 443 ssl;
    server_name xxxx.xxxxxx.com;
    client_max_body_size 100M;
    root /var/www/html/zero/zero-api/public;
    index index.php;
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header X-Forwarded-For $remote_addr;
    #proxy_set_header REMOTE-HOST $remote_addr;
    #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #set $php_path /var/www/html/zero-api/public;

    location /locales {
        break;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass d_zero:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
    }

    ssl_certificate certs/xxxxxx.com.pem;
    ssl_certificate_key certs/xxxxxx.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!