diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0b84e4e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +* +!docker/ +!docker/Dockerfile.php +!docker/config/ +!docker/config/php/ +!docker/config/php/conf.d/ +!docker/config/php/conf.d/zz-opcache.ini diff --git a/docker/config/nginx/conf.d/sport-era.dev.conf b/docker/config/nginx/conf.d/sport-era.dev.conf index 8803323..82a194b 100644 --- a/docker/config/nginx/conf.d/sport-era.dev.conf +++ b/docker/config/nginx/conf.d/sport-era.dev.conf @@ -1,5 +1,5 @@ server { - listen 80; + listen 8000; server_name _; root /likeadmin_php/server/public; index index.html index.htm index.php; @@ -17,7 +17,7 @@ server { location ~ \.php$ { include fastcgi_params; - fastcgi_pass host.docker.internal:9000; + fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /likeadmin_php/server/public$fastcgi_script_name; } diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 1f8eccc..4eb7bf3 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -32,17 +32,11 @@ services: restart: unless-stopped depends_on: - server - extra_hosts: - - "host.docker.internal:host-gateway" - ports: - - "8000:80" + network_mode: host volumes: - ../server:/likeadmin_php/server:ro - ./config/nginx/conf.d/sport-era.dev.conf:/etc/nginx/conf.d/default.conf:ro - ./log/nginx/dev-logs:/logs - networks: - - sport-era-dev - admin: image: node:20-alpine working_dir: /app diff --git a/docs/业务进度管理.md b/docs/业务进度管理.md index 98cad4b..6867235 100644 --- a/docs/业务进度管理.md +++ b/docs/业务进度管理.md @@ -20,7 +20,7 @@ 完成内容: - `docker/docker-compose.dev.yml` 移除本地 MySQL、Redis 服务及后端对它们的启动依赖。 - Docker 后端和定时任务通过独立的 `docker/.env.server` 连接测试服宿主机上的 MySQL `test_sbnews` 与 Redis `6377/DB4`。 -- PHP 后端使用宿主机网络,使仅允许 `127.0.0.1` 登录的测试 MySQL 用户仍可复用;Nginx 通过 `host.docker.internal:9000` 访问 PHP-FPM。 +- PHP 后端和 Nginx 使用宿主机网络,使仅允许 `127.0.0.1` 登录的测试 MySQL 用户仍可复用;Nginx 监听宿主机 `8000` 并通过 `127.0.0.1:9000` 访问 PHP-FPM,不占用现有 `80/443`。 - `docker/.env.server` 作为私有运行配置,不进入 Git 或服务器代码部署包。 涉及模块: diff --git a/qa/backend/test_local_docker_php_performance_static.php b/qa/backend/test_local_docker_php_performance_static.php index f0cabac..a79a1c7 100644 --- a/qa/backend/test_local_docker_php_performance_static.php +++ b/qa/backend/test_local_docker_php_performance_static.php @@ -27,7 +27,7 @@ $expectations = [ [$compose, 'sport-era-dev-php:local', 'server 和 scheduler 应使用本地 PHP 镜像'], [$compose, 'docker/Dockerfile.php', '本地 PHP 镜像应由 Dockerfile 构建'], [$compose, './.env.server:/likeadmin_php/server/.env:ro', 'Docker 后端应使用独立的服务器环境文件'], - [$compose, 'network_mode: host', 'Docker 后端应使用宿主机网络访问仅允许本机连接的测试数据库'], + [$compose, 'network_mode: host', 'Docker 后端和 Nginx 应使用宿主机网络访问仅允许本机连接的测试数据库'], [$dockerfile, 'docker-php-ext-install', '本地 PHP 镜像必须安装 OPcache'], [$dockerfile, '0.0.0.0:9000', 'PHP-FPM 应允许 Nginx 容器通过宿主机网络访问'], [$dockerfile, 'opcache', '本地 PHP 镜像必须安装 OPcache'], @@ -35,7 +35,8 @@ $expectations = [ [$opcacheIni, 'opcache.enable=1', 'OPcache 必须启用'], [$opcacheIni, 'opcache.validate_timestamps=1', '开发环境必须保留源码更新时间检测'], [$opcacheIni, 'opcache.revalidate_freq=0', '源码修改必须立即使 OPcache 失效'], - [$nginxConfig, 'fastcgi_pass host.docker.internal:9000', 'Nginx 应通过宿主机网关访问 host 网络 PHP-FPM'], + [$nginxConfig, 'listen 8000;', '宿主机网络 Nginx 应监听测试端口 8000'], + [$nginxConfig, 'fastcgi_pass 127.0.0.1:9000', 'Nginx 应通过本机回环访问 host 网络 PHP-FPM'], [$uniappConfig, 'http://127.0.0.1:8000', 'H5 本地 API 应使用 IPv4 回环地址'], ];