version: "3.8" services: # MySQL 数据库 mysql: image: mysql:8.0 container_name: huangyan-mysql environment: MYSQL_ROOT_PASSWORD: huangyan123 MYSQL_DATABASE: huangyan_parking MYSQL_CHARSET: utf8mb4 ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 # Redis 缓存 redis: image: redis:7-alpine container_name: huangyan-redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 # 后台 API 服务 api: build: context: ./server dockerfile: Dockerfile container_name: huangyan-api ports: - "5000:5000" environment: - ASPNETCORE_ENVIRONMENT=Production - ConnectionStrings__MySQL=Server=mysql;Port=3306;Database=huangyan_parking;User=root;Password=huangyan123; - ConnectionStrings__Redis=redis:6379 depends_on: mysql: condition: service_healthy redis: condition: service_healthy restart: unless-stopped # 管理后台前端 admin: build: context: ./admin dockerfile: Dockerfile container_name: huangyan-admin ports: - "3001:80" depends_on: - api restart: unless-stopped volumes: mysql_data: redis_data: