services: # PostgreSQL 数据库 postgres: image: postgres:15-alpine container_name: maas-postgres restart: unless-stopped environment: POSTGRES_USER: ${DB_USER:-postgres} POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres123} POSTGRES_DB: ${DB_NAME:-aigcspace_test} ports: - "${DB_PORT_EXTERNAL:-5433}:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./backend/aigcspace_clean.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres}"] interval: 10s timeout: 5s retries: 5 # Redis 缓存 redis: image: redis:7-alpine container_name: maas-redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD:-redis123} ports: - "${REDIS_PORT_EXTERNAL:-6380}:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redis123}", "ping"] interval: 10s timeout: 5s retries: 5 # 后端服务 backend: build: context: ./backend dockerfile: Dockerfile container_name: maas-backend restart: unless-stopped ports: - "${BACKEND_PORT:-8010}:8010" environment: - DB_HOST=postgres - DB_PORT=5432 - DB_USER=${DB_USER:-postgres} - DB_PASSWORD=${DB_PASSWORD:-postgres123} - DB_NAME=${DB_NAME:-aigcspace_test} - REDIS_URL=redis://redis:6379 - REDIS_PASSWORD=${REDIS_PASSWORD:-redis123} - ENCRYPTION_KEY=${ENCRYPTION_KEY:-wxcz-aigc-default-encryption-key} - APP_HOST=0.0.0.0 - APP_PORT=8010 - DEBUG=${DEBUG:-false} # SSO 配置 - SSO_BASE_URL=${SSO_BASE_URL:-http://192.168.92.61:8200} - SSO_CLIENT_ID=${SSO_CLIENT_ID:-0SkYt2YdRx5xZjuMO15eWn6v4Dpz9UVr} - SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET:-GA7lJ9VnSLChF9uyms9E1sa899X3Ht1dvgZ0eFARuFSM1xTIfsnlPToWBMY17j5T} - SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-http://192.168.92.150/api/oauth/callback} - SSO_ADMIN_REDIRECT_URI=${SSO_ADMIN_REDIRECT_URI:-http://192.168.92.150/api/admin/oauth/callback} - SSO_SCOPE=${SSO_SCOPE:-profile email} - SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-http://192.168.92.61:9200/login} depends_on: postgres: condition: service_healthy redis: condition: service_healthy volumes: - backend_logs:/app/logs - ./backend/data:/app/data # Nginx 同时服务用户端前端和管理后台 nginx: build: context: . dockerfile: Dockerfile container_name: maas-nginx restart: unless-stopped ports: - "${NGINX_PORT:-80}:80" depends_on: - backend volumes: postgres_data: redis_data: backend_logs: