多个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 协议》,转载必须注明作者和本文链接