- Remove old review reports (keep latest only) - Move docs/ to deploy/docs-backup/ - Move performance-testing/ to deploy/ - Clean up test output files - Organize root directory
166 lines
3.8 KiB
YAML
166 lines
3.8 KiB
YAML
# Sub2API 测试环境 Docker Compose 配置
|
|
# 用于本地测试和CI/CD中的集成测试
|
|
|
|
version: '3.8'
|
|
|
|
services:
|
|
# PostgreSQL 测试数据库
|
|
postgres:
|
|
image: postgres:15-alpine
|
|
container_name: sub2api-test-postgres
|
|
environment:
|
|
POSTGRES_USER: test
|
|
POSTGRES_PASSWORD: test
|
|
POSTGRES_DB: sub2api_test
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres_test_data:/var/lib/postgresql/data
|
|
- ./backend/migrations:/docker-entrypoint-initdb.d
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U test -d sub2api_test"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- sub2api-test
|
|
|
|
# Redis 测试缓存
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: sub2api-test-redis
|
|
ports:
|
|
- "6379:6379"
|
|
command: redis-server --appendonly yes
|
|
volumes:
|
|
- redis_test_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 5
|
|
networks:
|
|
- sub2api-test
|
|
|
|
# 后端服务 (测试模式)
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile.test
|
|
container_name: sub2api-test-backend
|
|
environment:
|
|
- ENV=test
|
|
- DB_HOST=postgres
|
|
- DB_PORT=5432
|
|
- DB_USER=test
|
|
- DB_PASSWORD=test
|
|
- DB_NAME=sub2api_test
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- JWT_SECRET=test-jwt-secret-for-testing-only
|
|
- ENCRYPTION_KEY=test-encryption-key-32bytes!!
|
|
- LOG_LEVEL=debug
|
|
ports:
|
|
- "8080:8080"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
volumes:
|
|
- ./backend:/app
|
|
- go_mod_cache:/go/pkg/mod
|
|
networks:
|
|
- sub2api-test
|
|
command: ["go", "run", "./cmd/server"]
|
|
|
|
# 前端服务 (测试构建)
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile.test
|
|
container_name: sub2api-test-frontend
|
|
environment:
|
|
- NODE_ENV=test
|
|
- VITE_API_URL=http://localhost:8080
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- ./frontend:/app
|
|
- node_modules_cache:/app/node_modules
|
|
networks:
|
|
- sub2api-test
|
|
command: ["npm", "run", "preview"]
|
|
|
|
# InfluxDB (性能测试数据存储)
|
|
influxdb:
|
|
image: influxdb:2.7-alpine
|
|
container_name: sub2api-test-influxdb
|
|
environment:
|
|
- INFLUXDB_DB=k6
|
|
- INFLUXDB_ADMIN_USER=admin
|
|
- INFLUXDB_ADMIN_PASSWORD=admin123
|
|
- INFLUXDB_HTTP_AUTH_ENABLED=false
|
|
ports:
|
|
- "8086:8086"
|
|
volumes:
|
|
- influxdb_data:/var/lib/influxdb2
|
|
networks:
|
|
- sub2api-test
|
|
|
|
# Grafana (性能测试可视化)
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
container_name: sub2api-test-grafana
|
|
environment:
|
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
|
ports:
|
|
- "3001:3000"
|
|
volumes:
|
|
- ./tests/performance/grafana:/etc/grafana/provisioning
|
|
- grafana_data:/var/lib/grafana
|
|
depends_on:
|
|
- influxdb
|
|
networks:
|
|
- sub2api-test
|
|
|
|
# MinIO (对象存储测试)
|
|
minio:
|
|
image: minio/minio:latest
|
|
container_name: sub2api-test-minio
|
|
environment:
|
|
- MINIO_ROOT_USER=minioadmin
|
|
- MINIO_ROOT_PASSWORD=minioadmin
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
volumes:
|
|
- minio_data:/data
|
|
command: server /data --console-address ":9001"
|
|
networks:
|
|
- sub2api-test
|
|
|
|
# MailHog (邮件测试)
|
|
mailhog:
|
|
image: mailhog/mailhog:latest
|
|
container_name: sub2api-test-mailhog
|
|
ports:
|
|
- "1025:1025" # SMTP
|
|
- "8025:8025" # Web UI
|
|
networks:
|
|
- sub2api-test
|
|
|
|
volumes:
|
|
postgres_test_data:
|
|
redis_test_data:
|
|
go_mod_cache:
|
|
node_modules_cache:
|
|
influxdb_data:
|
|
grafana_data:
|
|
minio_data:
|
|
|
|
networks:
|
|
sub2api-test:
|
|
driver: bridge
|