name: ${COMPOSE_PROJECT_NAME:-wolin-cloud} services: db: image: mysql:8.4 restart: unless-stopped environment: MYSQL_DATABASE: student_management_system MYSQL_USER: wolin MYSQL_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in the cloud environment file} MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:?Set DB_ROOT_PASSWORD} TZ: Asia/Shanghai command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_0900_ai_ci", "--innodb-buffer-pool-size=256M", "--max-connections=80"] volumes: - mysql_data:/var/lib/mysql networks: [database] healthcheck: test: ["CMD-SHELL", "MYSQL_PWD=\"$$MYSQL_ROOT_PASSWORD\" mysql -h 127.0.0.1 -uroot -e 'SELECT 1' >/dev/null 2>&1"] interval: 5s timeout: 5s retries: 30 start_period: 30s logging: options: {max-size: "10m", max-file: "3"} web: image: wolin-student-management:cloud build: context: . args: PIP_INDEX_URL: ${PIP_INDEX_URL:-https://pypi.org/simple} restart: unless-stopped init: true command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8004", "--root-path", "/wolin", "--forwarded-allow-ips", "*"] environment: DB_HOST: db DB_PORT: "3306" DB_NAME: student_management_system DB_USER: wolin DB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD} CORS_ORIGINS: ${CORS_ORIGINS:-https://zhouxing199901.site} DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-} DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek-flash} TZ: Asia/Shanghai AUTH_ENABLED: "true" AUTH_COOKIE_SECURE: ${AUTH_COOKIE_SECURE:-true} WOLIN_AUTH_USER: ${WOLIN_AUTH_USER:-admin} WOLIN_AUTH_PASSWORD_HASH: ${WOLIN_AUTH_PASSWORD_HASH:?Generate administrator credentials} WOLIN_SESSION_SECRET: ${WOLIN_SESSION_SECRET:?Generate a session signing secret} depends_on: db: {condition: service_healthy} networks: [database, frontend] logging: options: {max-size: "10m", max-file: "3"} gateway: image: caddy:2-alpine restart: unless-stopped ports: - "${HTTP_BIND:-0.0.0.0}:${HTTP_PORT:-80}:80" - "${HTTP_BIND:-0.0.0.0}:${HTTPS_PORT:-443}:443" environment: SITE_ADDRESS: ${SITE_ADDRESS:-zhouxing199901.site} PUBLIC_IP: ${PUBLIC_IP:-} volumes: - ${CADDY_CONFIG_FILE:-./deploy/Caddyfile}:/etc/caddy/Caddyfile:ro - ./deploy/site:/srv:ro - caddy_data:/data - caddy_config:/config networks: [frontend] logging: options: {max-size: "10m", max-file: "3"} volumes: mysql_data: caddy_data: caddy_config: networks: database: internal: true frontend: