services: # PostgreSQL 数据库 postgres: image: postgres:16.9 container_name: hyapi-postgres environment: POSTGRES_DB: hyapi_dev POSTGRES_USER: postgres POSTGRES_PASSWORD: Qm8kZ3nR7pL4wT9y POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C" TZ: Asia/Shanghai PGTZ: Asia/Shanghai ports: - "15432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql - ./scripts/set_timezone.sql:/docker-entrypoint-initdb.d/set_timezone.sql - ./deployments/docker/postgresql.conf:/etc/postgresql/postgresql.conf networks: - hyapi-network healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 # Redis 缓存 redis: image: redis:8.0.2 container_name: hyapi-redis ports: - "16379:6379" volumes: - redis_data:/data - ./deployments/docker/redis.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf environment: TZ: Asia/Shanghai networks: - hyapi-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 # Asynq 任务监控 asynq-monitor: image: hibiken/asynqmon:latest container_name: hyapi-asynq-monitor environment: TZ: Asia/Shanghai ports: - "18081:8080" command: --redis-addr=hyapi-redis:6379 networks: - hyapi-network depends_on: redis: condition: service_healthy restart: unless-stopped volumes: postgres_data: driver: local redis_data: driver: local networks: hyapi-network: driver: bridge