version: '3.8' services: backend: container_name: backend build: context: ./backend dockerfile: ./Dockerfile image: backend:latest restart: always environment: TZ: "Asia/Shanghai" # DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://user:password@postgres:5432/payment} # REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} # ALIPAY_APP_ID: ${ALIPAY_APP_ID:-""} # ALIPAY_PRIVATE_KEY: ${ALIPAY_PRIVATE_KEY:-""} # ALIPAY_PUBLIC_KEY: ${ALIPAY_PUBLIC_KEY:-""} ports: - "8001:8001" volumes: - ./backend:/app networks: - app-tier healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8001/api/v1/payment/notify/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s frontend: container_name: frontend build: context: ./frontend dockerfile: ./Dockerfile image: frontend:latest restart: always environment: TZ: "Asia/Shanghai" VITE_API_BASE_URL: ${VITE_API_BASE_URL:-http://localhost:8001} ports: - "5173:80" networks: - app-tier networks: app-tier: driver: bridge