# Staging Docker Compose(预发环境,仅开发/测试) version: '3.8' services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: danyang_match_staging POSTGRES_USER: staging POSTGRES_PASSWORD: staging_dev_password_change_me ports: - "5433:5432" volumes: - postgres_staging_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U staging -d danyang_match_staging"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine ports: - "6380:6379" command: redis-server --appendonly yes --requirepass staging-redis-pass-change-me volumes: - redis_staging_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "staging-redis-pass-change-me", "ping"] interval: 10s timeout: 5s retries: 5 minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: staging MINIO_ROOT_PASSWORD: staging_dev_password ports: - "9010:9000" - "9011:9001" volumes: - minio_staging_data:/data backend: build: context: ../backend dockerfile: Dockerfile container_name: danyang-match-staging-backend depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: SPRING_PROFILES_ACTIVE: staging DB_HOST: postgres DB_PORT: 5432 DB_NAME: danyang_match_staging DB_USER: staging DB_PASSWORD: staging_dev_password_change_me REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: staging-redis-pass-change-me MINIO_ENDPOINT: http://minio:9000 MINIO_ACCESS_KEY: staging MINIO_SECRET_KEY: staging_dev_password JWT_ACCESS_SECRET: staging-access-secret-dev-only JWT_REFRESH_SECRET: staging-refresh-secret-dev-only CHECKIN_TOKEN_SECRET: staging-checkin-secret-dev-only ENCRYPTION_KEY: 32539f3d2fa8123dcec899cc3dbee7347034123a126ac22fcb4702e10c454d50 FEATURES_APPEAL_ENABLED: "true" ports: - "8081:8080" healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/health/ready || exit 1"] interval: 30s timeout: 10s retries: 3 admin-web: build: context: ../admin-web dockerfile: Dockerfile container_name: danyang-match-staging-admin depends_on: - backend ports: # staging 与生产同机共存,全部端口按「生产 + 1」错开(5433/6380/8081/13521)。 # 生产管理端为 13520(admin-web/vite.config.ts + docker-compose.prod.yml), # 故此处为 13521 —— 与 tests/uat/run-uat.sh 的 UAT_ADMIN_URL 默认值一致, # 两处均由 ui-tests/ui-document-baseline-contracts.mjs 钉住。 # 管理端构建产物部署在 /admin/ 子路径下(见 admin-web/vite.config.ts 的 base), # 故直连访问地址为 http://localhost:13521/admin/ 。 - "13521:80" volumes: postgres_staging_data: redis_staging_data: minio_staging_data: