fix: run test docker gateway on host network

This commit is contained in:
hajimi
2026-08-01 17:34:04 +08:00
parent 9e44df3a73
commit ebbcb7f007
5 changed files with 14 additions and 12 deletions
+7
View File
@@ -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
@@ -1,5 +1,5 @@
server { server {
listen 80; listen 8000;
server_name _; server_name _;
root /likeadmin_php/server/public; root /likeadmin_php/server/public;
index index.html index.htm index.php; index index.html index.htm index.php;
@@ -17,7 +17,7 @@ server {
location ~ \.php$ { location ~ \.php$ {
include fastcgi_params; include fastcgi_params;
fastcgi_pass host.docker.internal:9000; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /likeadmin_php/server/public$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /likeadmin_php/server/public$fastcgi_script_name;
} }
+1 -7
View File
@@ -32,17 +32,11 @@ services:
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- server - server
extra_hosts: network_mode: host
- "host.docker.internal:host-gateway"
ports:
- "8000:80"
volumes: volumes:
- ../server:/likeadmin_php/server:ro - ../server:/likeadmin_php/server:ro
- ./config/nginx/conf.d/sport-era.dev.conf:/etc/nginx/conf.d/default.conf:ro - ./config/nginx/conf.d/sport-era.dev.conf:/etc/nginx/conf.d/default.conf:ro
- ./log/nginx/dev-logs:/logs - ./log/nginx/dev-logs:/logs
networks:
- sport-era-dev
admin: admin:
image: node:20-alpine image: node:20-alpine
working_dir: /app working_dir: /app
+1 -1
View File
@@ -20,7 +20,7 @@
完成内容: 完成内容:
- `docker/docker-compose.dev.yml` 移除本地 MySQL、Redis 服务及后端对它们的启动依赖。 - `docker/docker-compose.dev.yml` 移除本地 MySQL、Redis 服务及后端对它们的启动依赖。
- Docker 后端和定时任务通过独立的 `docker/.env.server` 连接测试服宿主机上的 MySQL `test_sbnews` 与 Redis `6377/DB4` - 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 或服务器代码部署包。 - `docker/.env.server` 作为私有运行配置,不进入 Git 或服务器代码部署包。
涉及模块: 涉及模块:
@@ -27,7 +27,7 @@ $expectations = [
[$compose, 'sport-era-dev-php:local', 'server 和 scheduler 应使用本地 PHP 镜像'], [$compose, 'sport-era-dev-php:local', 'server 和 scheduler 应使用本地 PHP 镜像'],
[$compose, 'docker/Dockerfile.php', '本地 PHP 镜像应由 Dockerfile 构建'], [$compose, 'docker/Dockerfile.php', '本地 PHP 镜像应由 Dockerfile 构建'],
[$compose, './.env.server:/likeadmin_php/server/.env:ro', 'Docker 后端应使用独立的服务器环境文件'], [$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, 'docker-php-ext-install', '本地 PHP 镜像必须安装 OPcache'],
[$dockerfile, '0.0.0.0:9000', 'PHP-FPM 应允许 Nginx 容器通过宿主机网络访问'], [$dockerfile, '0.0.0.0:9000', 'PHP-FPM 应允许 Nginx 容器通过宿主机网络访问'],
[$dockerfile, 'opcache', '本地 PHP 镜像必须安装 OPcache'], [$dockerfile, 'opcache', '本地 PHP 镜像必须安装 OPcache'],
@@ -35,7 +35,8 @@ $expectations = [
[$opcacheIni, 'opcache.enable=1', 'OPcache 必须启用'], [$opcacheIni, 'opcache.enable=1', 'OPcache 必须启用'],
[$opcacheIni, 'opcache.validate_timestamps=1', '开发环境必须保留源码更新时间检测'], [$opcacheIni, 'opcache.validate_timestamps=1', '开发环境必须保留源码更新时间检测'],
[$opcacheIni, 'opcache.revalidate_freq=0', '源码修改必须立即使 OPcache 失效'], [$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 回环地址'], [$uniappConfig, 'http://127.0.0.1:8000', 'H5 本地 API 应使用 IPv4 回环地址'],
]; ];