chore: use test host database and redis in dev compose
This commit is contained in:
@@ -32,3 +32,4 @@ qa/
|
|||||||
./vscode/
|
./vscode/
|
||||||
.tmp*
|
.tmp*
|
||||||
.codex/
|
.codex/
|
||||||
|
docker/.env.server
|
||||||
|
|||||||
@@ -11,13 +11,11 @@ services:
|
|||||||
<<: *php-image
|
<<: *php-image
|
||||||
working_dir: /likeadmin_php/server
|
working_dir: /likeadmin_php/server
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
|
||||||
mysql:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../server:/likeadmin_php/server
|
- ../server:/likeadmin_php/server
|
||||||
|
- ./.env.server:/likeadmin_php/server/.env:ro
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
networks:
|
networks:
|
||||||
- sport-era-dev
|
- sport-era-dev
|
||||||
|
|
||||||
@@ -25,15 +23,13 @@ services:
|
|||||||
<<: *php-image
|
<<: *php-image
|
||||||
working_dir: /likeadmin_php/server
|
working_dir: /likeadmin_php/server
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
|
||||||
mysql:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
command: >-
|
command: >-
|
||||||
sh -c "while true; do php think crontab; sleep 60; done"
|
sh -c "while true; do php think crontab; sleep 60; done"
|
||||||
volumes:
|
volumes:
|
||||||
- ../server:/likeadmin_php/server
|
- ../server:/likeadmin_php/server
|
||||||
|
- ./.env.server:/likeadmin_php/server/.env:ro
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
networks:
|
networks:
|
||||||
- sport-era-dev
|
- sport-era-dev
|
||||||
|
|
||||||
@@ -85,45 +81,6 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- sport-era-dev
|
- sport-era-dev
|
||||||
|
|
||||||
mysql:
|
|
||||||
image: mysql:8.2
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: ${SPORT_ERA_MYSQL_ROOT_PASSWORD:-root}
|
|
||||||
MYSQL_DATABASE: ${SPORT_ERA_MYSQL_DATABASE:-sbnews}
|
|
||||||
MYSQL_USER: ${SPORT_ERA_MYSQL_USER:-sbnews}
|
|
||||||
MYSQL_PASSWORD: ${SPORT_ERA_MYSQL_PASSWORD:-sbnews}
|
|
||||||
TZ: Asia/Shanghai
|
|
||||||
ports:
|
|
||||||
- "${SPORT_ERA_MYSQL_PORT:-3307}:3306"
|
|
||||||
volumes:
|
|
||||||
- ./data/mysql:/var/lib/mysql
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
start_period: 30s
|
|
||||||
networks:
|
|
||||||
- sport-era-dev
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: registry.cn-guangzhou.aliyuncs.com/likeadmin/redis:7.4.0
|
|
||||||
restart: unless-stopped
|
|
||||||
command: redis-server --appendonly yes
|
|
||||||
ports:
|
|
||||||
- "${SPORT_ERA_REDIS_PORT:-6379}:6379"
|
|
||||||
volumes:
|
|
||||||
- ./data/redis:/data
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "redis-cli", "ping"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
start_period: 10s
|
|
||||||
networks:
|
|
||||||
- sport-era-dev
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
admin-node-modules:
|
admin-node-modules:
|
||||||
uniapp-node-modules:
|
uniapp-node-modules:
|
||||||
|
|||||||
@@ -13,6 +13,24 @@
|
|||||||
|
|
||||||
## 一、已完成事项
|
## 一、已完成事项
|
||||||
|
|
||||||
|
### 93. Docker 测试环境改用宿主机 MySQL 与 Redis
|
||||||
|
|
||||||
|
- 状态:代码已修改,待部署测试服验证 - 时间:2026-08-01
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
- `docker/docker-compose.dev.yml` 移除本地 MySQL、Redis 服务及后端对它们的启动依赖。
|
||||||
|
- Docker 后端和定时任务通过独立的 `docker/.env.server` 连接测试服宿主机上的 MySQL `test_sbnews` 与 Redis `6377/DB4`。
|
||||||
|
- `docker/.env.server` 作为私有运行配置,不进入 Git 或服务器代码部署包;容器通过 `host.docker.internal` 访问宿主机服务。
|
||||||
|
|
||||||
|
涉及模块:
|
||||||
|
- `docker/docker-compose.dev.yml`
|
||||||
|
- `.gitignore`
|
||||||
|
- `scripts/deploy-server.ps1`
|
||||||
|
- `qa/backend/test_local_docker_php_performance_static.php`
|
||||||
|
|
||||||
|
验证说明:
|
||||||
|
- 已先执行静态检查,确认旧 compose 仍包含 MySQL/Redis 服务并按预期失败;修改完成后需重新执行静态检查、Compose 配置检查和测试服容器启动验证。
|
||||||
|
|
||||||
### 92. 本地 Docker PHP 接口性能修复
|
### 92. 本地 Docker PHP 接口性能修复
|
||||||
|
|
||||||
- 状态:代码已修改,待重新构建容器并验证 - 时间:2026-08-01
|
- 状态:代码已修改,待重新构建容器并验证 - 时间:2026-08-01
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ $uniappConfig = file_get_contents($files['uniapp_config']);
|
|||||||
$expectations = [
|
$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, 'host.docker.internal:host-gateway', 'Docker 后端应能访问宿主机上的数据库与 Redis'],
|
||||||
[$dockerfile, 'docker-php-ext-install', '本地 PHP 镜像必须安装 OPcache'],
|
[$dockerfile, 'docker-php-ext-install', '本地 PHP 镜像必须安装 OPcache'],
|
||||||
[$dockerfile, 'opcache', '本地 PHP 镜像必须安装 OPcache'],
|
[$dockerfile, 'opcache', '本地 PHP 镜像必须安装 OPcache'],
|
||||||
[$dockerfile, 'zz-opcache.ini', '本地 PHP 镜像必须载入 OPcache 配置'],
|
[$dockerfile, 'zz-opcache.ini', '本地 PHP 镜像必须载入 OPcache 配置'],
|
||||||
@@ -33,6 +35,20 @@ $expectations = [
|
|||||||
[$uniappConfig, 'http://127.0.0.1:8000', 'H5 本地 API 应使用 IPv4 回环地址'],
|
[$uniappConfig, 'http://127.0.0.1:8000', 'H5 本地 API 应使用 IPv4 回环地址'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
foreach (['mysql:', 'redis:'] as $removedService) {
|
||||||
|
if (preg_match('/^ ' . preg_quote(rtrim($removedService, ':'), '/') . ':\s*$/m', $compose)) {
|
||||||
|
fwrite(STDERR, "本地 compose 不应再启动 {$removedService} 服务\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (['depends_on:\n mysql:', 'depends_on:\n redis:'] as $removedDependency) {
|
||||||
|
if (strpos($compose, $removedDependency) !== false) {
|
||||||
|
fwrite(STDERR, "后端服务不应依赖已移除的本地服务\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($expectations as [$haystack, $needle, $message]) {
|
foreach ($expectations as [$haystack, $needle, $message]) {
|
||||||
if (strpos($haystack, $needle) === false) {
|
if (strpos($haystack, $needle) === false) {
|
||||||
fwrite(STDERR, $message . "\n");
|
fwrite(STDERR, $message . "\n");
|
||||||
|
|||||||
@@ -260,7 +260,8 @@ function Get-ArchiveExcludePatterns {
|
|||||||
$patterns += @(
|
$patterns += @(
|
||||||
"server/.env",
|
"server/.env",
|
||||||
"docker/.env",
|
"docker/.env",
|
||||||
"docker/.env.docker"
|
"docker/.env.docker",
|
||||||
|
"docker/.env.server"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (-not $IncludeVendor) {
|
if (-not $IncludeVendor) {
|
||||||
|
|||||||
Reference in New Issue
Block a user