From 370e790d9dd145820a3ee22cf8aef10a0bcee3f8 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Mon, 3 Nov 2025 13:52:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9docker=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87?= =?UTF-8?q?.env=E6=96=87=E4=BB=B6=E4=BC=A0=E5=85=A5=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 24 ++++++++++++++++ docker-compose.yml | 71 ++++++++++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..dbcde0862 --- /dev/null +++ b/.env.example @@ -0,0 +1,24 @@ +# 项目配置, 请根据实际情况修改 +PROJECT_NAME=newshop + +# PHP/PHP-FPM 配置 +PHP_VERSION=7.4 +PHP_FPM_VERSION=7.4-fpm +PHP_FPM_PORT=9000 +XDEBUG_POST=9003 + +# 数据库配置 +MYSQL_ROOT_HOST=% +MYSQL_DATABASE=shop_mallnew +MYSQL_USER=shop_mallnew +MYSQL_PASSWORD=shop_mallnew +MYSQL_PORT=3306 + +# Redis 配置 +REDIS_PASSWORD=luckyshop123!@# +REDIS_PORT=6379 + +# Nginx 配置 +NGINX_PORT=80 +NGINX_SSL_PORT=443 + diff --git a/docker-compose.yml b/docker-compose.yml index 0b97668e7..95a37412f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,22 +1,32 @@ +x-shared-env: &shared-api-env + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword} + MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST:-'%'} # 允许root从任何主机连接 + MYSQL_DATABASE: ${MYSQL_DATABASE:-shop_mallnew} + MYSQL_USER: ${MYSQL_USER:-shop_mallnew} + MYSQL_PASSWORD: ${MYSQL_PASSWORD:-shop_mallnew} + REDIS_PASSWORD: ${REDIS_PASSWORD:-luckyshop123!@#} + REDIS_PORT: ${REDIS_PORT:-6379} + +# 将服务归类到目录 A 中 services: php-fpm: build: context: ./docker/php dockerfile: Dockerfile - container_name: newshop_php + container_name: ${PROJECT_NAME}_php restart: always extra_hosts: - "host.docker.internal:host-gateway" # 支持主机名解析 environment: - - PHP_ENV=development - - APP_ENV=development - - APP_DEBUG=true - - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003 - - PHP_IDE_CONFIG=serverName=docker-php + PHP_ENV: ${PHP_ENV:-development} + APP_ENV: ${APP_ENV:-development} + APP_DEBUG: ${APP_DEBUG:-true} + XDEBUG_CONFIG: ${XDEBUG_CONFIG:-client_host=host.docker.internal client_port=9003} + PHP_IDE_CONFIG: serverName=docker-php ports: - - "9000:9000" # PHP-FPM - - "9003:9003" # Xdebug + - "${PHP_FPM_PORT:-9000}:9000" # PHP-FPM + - "${XDEBUG_POST:-9003}:9003" # Xdebug volumes: - ./src:/var/www/html # 更新下载源列表以加速apt-get @@ -27,17 +37,19 @@ services: depends_on: - db networks: - - newshop-net + - sass-platform-net + labels: + - "com.docker.compose.project.working_dir=${PROJECT_NAME}" nginx: build: context: ./docker/nginx dockerfile: Dockerfile - container_name: newshop_nginx + container_name: ${PROJECT_NAME}_nginx restart: always ports: - - "80:80" - - "443:443" + - "${NGINX_PORT:-80}:80" + - "${NGINX_SSL_PORT:-443}:443" volumes: - ./src:/var/www/html:ro # 更新下载源列表以加速apt-get @@ -45,52 +57,51 @@ services: # 创建临时目录 - /var/www/server/nginx/proxy_temp_dir - /var/www/server/nginx/proxy_cache_dir - - depends_on: - php-fpm networks: - - newshop-net + - sass-platform-net + labels: + - "com.docker.compose.project.working_dir=${PROJECT_NAME}" db: image: mysql:5.7.44 - container_name: newshop_mysql + container_name: ${PROJECT_NAME}_mysql environment: - MYSQL_ROOT_PASSWORD: rootpassword - MYSQL_ROOT_HOST: '%' # 允许root从任何主机连接 - MYSQL_DATABASE: shop_mallnew - MYSQL_USER: shop_mallnew - MYSQL_PASSWORD: shop_mallnew - # env_file: - # - ./.docker/.env + <<: *shared-api-env volumes: - mysql_db_data:/var/lib/mysql - ./docker/mysql/init:/docker-entrypoint-initdb.d - ./docker/mysql/my.cnf:/etc/mysql/conf.d/custom.cnf ports: - - "3306:3306" + - ${MYSQL_PORT:-3306}:3306 networks: - - newshop-net + - sass-platform-net 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}" # Redis 服务(可选) redis: image: redis:8.2 - container_name: newshop-redis + container_name: ${PROJECT_NAME}_redis environment: - - REDIS_PASSWORD=luckyshop123!@# + REDIS_PASSWORD: ${REDIS_PASSWORD:-luckyshop123!@#} + REDISCLI_AUTH: ${REDIS_PASSWORD:-luckyshop123!@#} ports: - - "6379:6379" + - "${REDIS_PORT:-6379}:6379" volumes: - redis_data:/data - ./docker/redis/redis.conf:/etc/redis/redis.conf networks: - - newshop-net + - sass-platform-net restart: unless-stopped + labels: + - "com.docker.compose.project.working_dir=${PROJECT_NAME}" volumes: mysql_db_data: @@ -98,5 +109,5 @@ volumes: xdebug_logs: networks: - newshop-net: + sass-platform-net: driver: bridge \ No newline at end of file