version: '3.8' x-platform: &platform platform: ${PLATFORM:-linux/amd64} # 默认使用 amd64,可通过环境变量覆盖 services: mysql: image: mysql:lts-oraclelinux9 container_name: panel_mysql restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: panel command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes: - ./data/mysql:/var/lib/mysql networks: - panel_network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 redis: image: redis:latest container_name: panel_redis restart: always networks: - panel_network volumes: - ./data/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 web: image: kissyouhunter/cloudpanel:web container_name: cloudpanel-web restart: always ports: - "${FRONTENDPORT:-8086}:8080" depends_on: - api command: [ 'nginx-debug', '-g', 'daemon off;' ] networks: - panel_network api: image: zszken/cloudpanel:latest <<: *platform container_name: cloudpanel-api restart: always ports: - "${BACKENDPORT:-8111}:889" depends_on: mysql: condition: service_healthy redis: condition: service_healthy networks: - panel_network volumes: - ./logs:/home/python/panel/logs env_file: - .env # environment: # - DJANGO_SETTINGS_MODULE=panelProject.settings # - MYSQL_HOST=mysql # - MYSQL_PORT=3306 # - MYSQL_DATABASE=panel # - MYSQL_USER=root # - MYSQL_PASSWORD=root # - REDIS_HOST=redis # - REDIS_PORT=6379 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:889/health/"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: panel_network: driver: bridge