version: '3.8'

services:
  # 微信机器人管理系统
  wechat-robot:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: wechat-robot
    restart: unless-stopped
    ports:
      - "8080:8080"  # 应用端口
    volumes:
      - ./configs:/app/configs  # 配置文件
      - ./data:/app/data        # 数据文件
      - ./logs:/app/logs        # 日志文件
      - /var/run/docker.sock:/var/run/docker.sock  # Docker socket 用于容器管理
    # 添加 docker 组的 GID 到容器，999 是常见的 docker 组 GID，但在不同系统可能不同
    group_add:
      - "999"  # 请确认您系统上的 docker 组 GID
    environment:
      - APP_ENV=production
      - TZ=Asia/Shanghai
      - DOCKER_HOST=unix:///var/run/docker.sock
    depends_on:
      - postgres
      - redis
    networks:
      - wechat-network

  # PostgreSQL 数据库
  postgres:
    image: postgres:14-alpine
    container_name: wechat-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password  # 生产环境请修改此密码
      POSTGRES_DB: wechat_demo
    volumes:
      - postgres-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - wechat-network

  # Redis 服务
  redis:
    image: redis:7-alpine
    container_name: wechat-redis
    restart: unless-stopped
    command: redis-server --requirepass pGhQKwj7DE7FbFL1  # 与配置中的密码一致
    volumes:
      - redis-data:/data
    ports:
      - "6379:6379"
    networks:
      - wechat-network

  # PGAdmin（可选）数据库管理工具
  pgadmin:
    image: dpage/pgadmin4
    container_name: wechat-pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: admin  # 生产环境请修改此密码
    ports:
      - "5050:80"
    depends_on:
      - postgres
    networks:
      - wechat-network

volumes:
  postgres-data:
  redis-data:

networks:
  wechat-network:
    name: wechat-network
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16  # 定义子网，允许固定IP分配
