108 lines
3.1 KiB
YAML
108 lines
3.1 KiB
YAML
x-shared-env: &shared-api-env
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
|
|
MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST:-'%'} # 允许root从任何主机连接
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-eyoucms}
|
|
MYSQL_USER: ${MYSQL_USER:-eyoucms}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-eyoucms}
|
|
|
|
# 将服务归类到目录 A 中
|
|
services:
|
|
php-fpm:
|
|
build:
|
|
context: ./docker/php
|
|
dockerfile: Dockerfile
|
|
container_name: ${PROJECT_NAME}_${APP_ENV}_php
|
|
restart: always
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway" # 支持主机名解析
|
|
environment:
|
|
PHP_ENV: ${PHP_ENV:-dev}
|
|
APP_ENV: ${APP_ENV:-dev}
|
|
APP_DEBUG: ${APP_DEBUG:-true}
|
|
ports:
|
|
- "${PHP_FPM_PORT:-9000}:9000" # PHP-FPM
|
|
volumes:
|
|
- ./src:/var/www/html
|
|
# 更新下载源列表以加速apt-get
|
|
- ./docker/debian/sources.list:/etc/apt/sources.list:ro
|
|
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
|
|
depends_on:
|
|
- db
|
|
healthcheck:
|
|
test: ["CMD", "bash", "-c", "curl -f http://localhost:9000/status"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
networks:
|
|
- net-php-ooficial-website
|
|
labels:
|
|
- "com.docker.compose.project.working_dir=${PROJECT_NAME}_${APP_ENV}"
|
|
|
|
nginx:
|
|
build:
|
|
context: ./docker/nginx
|
|
dockerfile: Dockerfile
|
|
container_name: ${PROJECT_NAME}_${APP_ENV}_nginx
|
|
restart: always
|
|
ports:
|
|
- "${NGINX_PORT:-80}:80"
|
|
- "${NGINX_SSL_PORT:-443}:443"
|
|
volumes:
|
|
# 挂载项目代码到 Nginx 容器中
|
|
- ./src:/var/www/html:rw
|
|
# 更新下载源列表以加速apt-get
|
|
- ./docker/debian/sources.list:/etc/apt/sources.list:ro
|
|
# 创建临时目录
|
|
- /var/www/server/nginx/proxy_temp_dir
|
|
- /var/www/server/nginx/proxy_cache_dir
|
|
depends_on:
|
|
- php-fpm
|
|
networks:
|
|
- net-php-ooficial-website
|
|
labels:
|
|
- "com.docker.compose.project.working_dir=${PROJECT_NAME}_${APP_ENV}"
|
|
|
|
db:
|
|
image: mysql:5.7.44
|
|
container_name: ${PROJECT_NAME}_${APP_ENV}_mysql
|
|
environment:
|
|
<<: *shared-api-env
|
|
volumes:
|
|
- mysql_db:/var/lib/mysql
|
|
- ./docker/mysql/init:/docker-entrypoint-initdb.d
|
|
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/custom.cnf
|
|
ports:
|
|
- ${MYSQL_PORT:-3306}:3306
|
|
networks:
|
|
- net-php-ooficial-website
|
|
restart: unless-stopped
|
|
command:
|
|
- --character-set-server=utf8mb4
|
|
- --collation-server=utf8mb4_unicode_ci
|
|
- --innodb_buffer_pool_size=256M
|
|
labels:
|
|
- "com.docker.compose.project.working_dir=${PROJECT_NAME}_${APP_ENV}"
|
|
|
|
volumes:
|
|
mysql_db:
|
|
name: ${PROJECT_NAME}_${APP_ENV}_mysql_db
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ./docker-volumes/mysql/${APP_ENV}
|
|
redis_data:
|
|
name: ${PROJECT_NAME}_${APP_ENV}_redis_data
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ./docker-volumes/redis/${APP_ENV}
|
|
|
|
|
|
networks:
|
|
net-php-ooficial-website:
|
|
name: ${PROJECT_NAME}_${APP_ENV}_net
|
|
driver: bridge
|
|
external: true |