# ============================================================ # 开发环境 Docker Compose — 仅基础设施 # 用途: 本地开发时启动依赖服务,应用服务通过 IDE 本地运行 # 启动: docker compose -f docker-compose.dev.yml up -d # ============================================================ services: postgres: image: postgis/postgis:16-3.4 container_name: wm-postgres-dev restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-water_management} POSTGRES_USER: ${POSTGRES_USER:-water} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-water123} ports: - "5432:5432" volumes: - pgdata-dev:/var/lib/postgresql/data - ./sql:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-water}"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: wm-redis-dev restart: unless-stopped ports: - "6379:6379" command: redis-server --requirepass ${REDIS_PASSWORD:-water123} volumes: - redisdata-dev:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-water123}", "ping"] interval: 10s timeout: 3s retries: 5 emqx: image: emqx/emqx:5.7.2 container_name: wm-emqx-dev restart: unless-stopped ports: - "1883:1883" - "8083:8083" - "18083:18083" environment: EMQX_DASHBOARD__DEFAULT_USERNAME: admin EMQX_DASHBOARD__DEFAULT_PASSWORD: public volumes: - emqxdata-dev:/opt/emqx/data healthcheck: test: ["CMD", "emqx", "ping"] interval: 10s timeout: 5s retries: 5 nacos: image: nacos/nacos-server:v2.3.2 container_name: wm-nacos-dev restart: unless-stopped environment: MODE: standalone PREFER_HOST_MODE: hostname ports: - "8848:8848" - "9848:9848" volumes: - nacosdata-dev:/home/nacos/data healthcheck: test: ["CMD-SHELL", "curl -sf http://localhost:8848/nacos/v1/console/health/readiness"] interval: 15s timeout: 5s retries: 5 minio: image: minio/minio:latest container_name: wm-minio-dev restart: unless-stopped ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin volumes: - miniodata-dev:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 volumes: pgdata-dev: redisdata-dev: emqxdata-dev: nacosdata-dev: miniodata-dev: