# 丹阳公益婚恋服务平台 - Backend version: '3.8' services: postgres: image: postgres:16-alpine container_name: danyang-match-postgres environment: POSTGRES_DB: danyang_match POSTGRES_USER: postgres POSTGRES_PASSWORD: ${DB_PASSWORD:?请在本地 .env 设置 DB_PASSWORD} ports: - "5434:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d danyang_match"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: danyang-match-redis ports: - "6381:6379" command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:?请在本地 .env 设置 REDIS_PASSWORD} volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:?请在本地 .env 设置 REDIS_PASSWORD}", "ping"] interval: 10s timeout: 5s retries: 5 minio: image: minio/minio:latest container_name: danyang-match-minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:?请在本地 .env 设置 MINIO_ACCESS_KEY} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:?请在本地 .env 设置 MINIO_SECRET_KEY} ports: - "9003:9000" - "9004:9001" volumes: - minio_data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 5 backend: build: context: ../backend dockerfile: Dockerfile container_name: danyang-match-backend depends_on: postgres: condition: service_healthy redis: condition: service_healthy minio: condition: service_healthy environment: SPRING_PROFILES_ACTIVE: docker DB_HOST: postgres DB_PORT: 5432 DB_NAME: danyang_match DB_USER: postgres DB_PASSWORD: ${DB_PASSWORD:?请在本地 .env 设置 DB_PASSWORD} REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: ${REDIS_PASSWORD:?请在本地 .env 设置 REDIS_PASSWORD} MINIO_ENDPOINT: http://minio:9000 MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:?请在本地 .env 设置 MINIO_ACCESS_KEY} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:?请在本地 .env 设置 MINIO_SECRET_KEY} JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET:?请在本地 .env 设置 JWT_ACCESS_SECRET} JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET:?请在本地 .env 设置 JWT_REFRESH_SECRET} ENCRYPTION_KEY: ${ENCRYPTION_KEY:?请在本地 .env 设置 ENCRYPTION_KEY} WECHAT_APP_ID: dev-wechat-app-id WECHAT_APP_SECRET: ${WECHAT_APP_SECRET:-} ports: - "8085:8080" healthcheck: test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health/live || exit 1"] interval: 30s timeout: 10s retries: 3 nginx: image: nginx:alpine container_name: danyang-match-nginx depends_on: - backend ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health"] interval: 30s timeout: 10s retries: 3 volumes: postgres_data: redis_data: minio_data: