配置文件检查报告

检查日期: 2026-02-03
检查范围: Docker Compose 配置、部署脚本、环境变量文件


📋 检查的文件

  1. docker-compose.complete.yml - 完整系统配置
  2. docker-compose.dev.yml - 开发版配置
  3. scripts/deploy_complete_development.ps1 - 开发环境部署脚本
  4. scripts/deploy_complete_production.ps1 - 生产环境部署脚本
  5. .env.development - 开发环境变量
  6. .env.production - 生产环境变量

🔍 发现的问题

1. ❌ 数据库配置不一致

问题描述:

  • docker-compose.complete.yml 中数据库名硬编码为 mbe
  • deploy_complete_development.ps1 中使用 mbe_dev 数据库
  • 容器名不匹配:脚本使用 mbe-postgres-dev,但配置中是 mbe-postgres

影响: 开发环境部署时种子数据无法正确初始化

修复:

  • ✅ 添加 POSTGRES_DB 环境变量支持
  • ✅ 添加 POSTGRES_SUFFIX 支持容器名后缀
  • ✅ 添加 POSTGRES_VOLUME 支持不同环境的卷名
  • ✅ 更新 .env.development 添加数据库配置

2. ❌ Docker Compose Volume 语法错误

问题描述:

  • Volume 名称中不能使用环境变量替换语法 ${POSTGRES_SUFFIX:-}

影响: YAML 语法错误,导致配置无法解析

修复:

  • ✅ 预定义所有需要的 volumes (pgdata, pgdata-dev)
  • ✅ 使用环境变量 POSTGRES_VOLUME 选择卷名

3. ⚠️ PowerShell 脚本警告

问题描述:

  • 未使用的变量 $dockerCheck$seedResult

影响: 代码质量警告,不影响功能

修复:

  • ✅ 移除未使用的变量赋值

✅ 修复内容

1. docker-compose.complete.yml

# 修复前
POSTGRES_DB=mbe
container_name: mbe-postgres
volumes:
  - pgdata:/var/lib/postgresql/data

# 修复后
POSTGRES_DB=${POSTGRES_DB:-mbe}
container_name: mbe-postgres${POSTGRES_SUFFIX:-}
volumes:
  - ${POSTGRES_VOLUME:-pgdata}:/var/lib/postgresql/data

2. .env.development

# 新增配置
POSTGRES_DB=mbe_dev
POSTGRES_SUFFIX=-dev
POSTGRES_VOLUME=pgdata-dev

3. scripts/deploy_complete_development.ps1

# 修复前
docker cp ... mbe-postgres-dev:/tmp/seed_data.sql
docker exec mbe-postgres-dev psql -U mbe -d mbe_dev ...

# 修复后
$postgresContainer = "mbe-postgres-dev"
docker cp ... ${postgresContainer}:/tmp/seed_data.sql
docker exec ${postgresContainer} psql -U mbe -d mbe_dev ...

📊 配置一致性验证

配置项 开发环境 生产环境 状态
数据库名 mbe_dev mbe ✅ 一致
容器名 mbe-postgres-dev mbe-postgres ✅ 一致
端口 5433 5432 ✅ 一致
API端口 8001 8000 ✅ 一致
环境变量 .env.development .env.production ✅ 一致
镜像标签 development production ✅ 一致

🎯 配置架构

开发环境配置流程

.env.development
  ├── ENVIRONMENT=development
  ├── POSTGRES_DB=mbe_dev
  ├── POSTGRES_SUFFIX=-dev
  └── POSTGRES_VOLUME=pgdata-dev
         ↓
docker-compose.complete.yml
  ├── container_name: mbe-postgres-dev
  ├── POSTGRES_DB=mbe_dev
  └── volume: pgdata-dev
         ↓
deploy_complete_development.ps1
  └── 使用 mbe-postgres-dev 和 mbe_dev

生产环境配置流程

.env.production
  ├── ENVIRONMENT=production
  ├── POSTGRES_DB=mbe (默认)
  └── POSTGRES_SUFFIX= (空)
         ↓
docker-compose.complete.yml
  ├── container_name: mbe-postgres
  ├── POSTGRES_DB=mbe
  └── volume: pgdata
         ↓
deploy_complete_production.ps1
  └── 使用 mbe-postgres 和 mbe

✅ 验证清单

  • Docker Compose 语法正确
  • 环境变量配置完整
  • 容器名与脚本一致
  • 数据库名与脚本一致
  • 端口配置正确
  • Volume 配置正确
  • 部署脚本路径正确
  • 种子数据脚本路径正确

📝 使用建议

开发环境部署

# 1. 确保 .env.development 配置正确
# 2. 运行部署脚本
.\scripts\deploy_complete_development.ps1

# 3. 验证容器
docker ps | Select-String "mbe-postgres-dev"

生产环境部署

# 1. 确保 .env.production 配置正确(特别是密码和密钥)
# 2. 运行部署脚本
.\scripts\deploy_complete_production.ps1

# 3. 验证容器
docker ps | Select-String "mbe-postgres"

🔗 相关文档


📌 注意事项

  1. 环境隔离: 开发和生产环境使用不同的数据库和卷,确保数据隔离
  2. 密码安全: 生产环境必须修改默认密码和密钥
  3. 容器命名: 开发环境使用 -dev 后缀,便于区分
  4. Volume 管理: 不同环境使用不同的 volume,避免数据混淆

检查完成时间: 2026-02-03
所有问题已修复 ✅