version: '3.8'

# 君鸿卡管系统生产环境部署配置
#
# 配置方式：纯环境变量配置（配置已嵌入二进制文件）
# 环境变量前缀：JUNHONG_
# 格式：JUNHONG_{配置路径}，路径分隔符用下划线替代点号
#
# 示例：
#   database.host  → JUNHONG_DATABASE_HOST
#   redis.address  → JUNHONG_REDIS_ADDRESS
#   jwt.secret_key → JUNHONG_JWT_SECRET_KEY
#
# 必填配置（缺失时服务无法启动）：
#   - JUNHONG_DATABASE_HOST
#   - JUNHONG_DATABASE_PORT
#   - JUNHONG_DATABASE_USER
#   - JUNHONG_DATABASE_PASSWORD
#   - JUNHONG_DATABASE_DBNAME
#   - JUNHONG_REDIS_ADDRESS
#   - JUNHONG_JWT_SECRET_KEY
#
# 可选配置（根据需要启用）：
#   - Gateway 服务配置（JUNHONG_GATEWAY_*）
#   - 微信公众号配置（JUNHONG_WECHAT_OFFICIAL_ACCOUNT_*）
#   - 微信支付配置（JUNHONG_WECHAT_PAYMENT_*）
#   - 对象存储配置（JUNHONG_STORAGE_*）

services:
  api:
    image: registry.boss160.cn/junhong/cmp-fiber-api:latest
    container_name: junhong-cmp-api
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      # 数据库配置（必填）
      - JUNHONG_DATABASE_HOST=cxd.whcxd.cn
      - JUNHONG_DATABASE_PORT=16159
      - JUNHONG_DATABASE_USER=erp_pgsql
      - JUNHONG_DATABASE_PASSWORD=erp_2025
      - JUNHONG_DATABASE_DBNAME=junhong_cmp_test
      - JUNHONG_DATABASE_SSLMODE=disable
      # Redis 配置（必填）
      - JUNHONG_REDIS_ADDRESS=cxd.whcxd.cn
      - JUNHONG_REDIS_PORT=16299
      - JUNHONG_REDIS_PASSWORD=cpNbWtAaqgo1YJmbMp3h
      - JUNHONG_REDIS_DB=6
      # JWT 配置（必填）
      - JUNHONG_JWT_SECRET_KEY=dev-secret-key-for-testing-only-32chars!
      # 日志配置
      - JUNHONG_LOGGING_LEVEL=info
      - JUNHONG_LOGGING_DEVELOPMENT=false
      # 对象存储配置
      - JUNHONG_STORAGE_PROVIDER=s3
      - JUNHONG_STORAGE_S3_ENDPOINT=https://obs-helf.cucloud.cn
      - JUNHONG_STORAGE_S3_REGION=cn-langfang-2
      - JUNHONG_STORAGE_S3_BUCKET=cmp
      - JUNHONG_STORAGE_S3_ACCESS_KEY_ID=598F558CF6FF46E79D1CFC607852378C9523
      - JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY=8393425DCB2F48F1914FF39DCBC6C7B17325
      - JUNHONG_STORAGE_S3_USE_SSL=false
      - JUNHONG_STORAGE_S3_PATH_STYLE=true
      # Gateway 配置（可选）
      - JUNHONG_GATEWAY_BASE_URL=https://lplan.whjhft.com/openapi
      - JUNHONG_GATEWAY_APP_ID=60bgt1X8i7AvXqkd
      - JUNHONG_GATEWAY_APP_SECRET=BZeQttaZQt0i73moF
      - JUNHONG_GATEWAY_TIMEOUT=30
      # 微信公众号配置（可选）
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_ID=your_app_id
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_SECRET=your_app_secret
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_TOKEN=your_token
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_AES_KEY=your_aes_key
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_OAUTH_REDIRECT_URL=https://your-domain.com/callback
      # 微信支付配置（可选）
      # - JUNHONG_WECHAT_PAYMENT_APP_ID=your_app_id
      # - JUNHONG_WECHAT_PAYMENT_MCH_ID=your_mch_id
      # - JUNHONG_WECHAT_PAYMENT_API_V3_KEY=your_32_char_api_v3_key
      # - JUNHONG_WECHAT_PAYMENT_API_V2_KEY=your_api_v2_key
      # - JUNHONG_WECHAT_PAYMENT_CERT_PATH=/app/certs/apiclient_cert.pem
      # - JUNHONG_WECHAT_PAYMENT_KEY_PATH=/app/certs/apiclient_key.pem
      # - JUNHONG_WECHAT_PAYMENT_SERIAL_NO=your_serial_no
      # - JUNHONG_WECHAT_PAYMENT_NOTIFY_URL=https://your-domain.com/api/callback/wechat-pay
      # - JUNHONG_WECHAT_PAYMENT_HTTP_DEBUG=false
      # - JUNHONG_WECHAT_PAYMENT_TIMEOUT=30s
    volumes:
      # 仅挂载日志目录（配置已嵌入二进制文件）
      - ./logs:/app/logs
      # 微信支付证书目录（如果使用微信支付，需要挂载证书）
      # - ./certs:/app/certs:ro
    networks:
      - junhong-network
    healthcheck:
      test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/health" ]
      interval: 30s
      timeout: 3s
      retries: 3
      start_period: 10s
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

  worker:
    image: registry.boss160.cn/junhong/cmp-fiber-worker:latest
    container_name: junhong-cmp-worker
    restart: unless-stopped
    environment:
      # 数据库配置（必填）
      - JUNHONG_DATABASE_HOST=cxd.whcxd.cn
      - JUNHONG_DATABASE_PORT=16159
      - JUNHONG_DATABASE_USER=erp_pgsql
      - JUNHONG_DATABASE_PASSWORD=erp_2025
      - JUNHONG_DATABASE_DBNAME=junhong_cmp_test
      - JUNHONG_DATABASE_SSLMODE=disable
      # Redis 配置（必填）
      - JUNHONG_REDIS_ADDRESS=cxd.whcxd.cn
      - JUNHONG_REDIS_PORT=16299
      - JUNHONG_REDIS_PASSWORD=cpNbWtAaqgo1YJmbMp3h
      - JUNHONG_REDIS_DB=6
      # JWT 配置（必填）
      - JUNHONG_JWT_SECRET_KEY=dev-secret-key-for-testing-only-32chars!
      # 日志配置
      - JUNHONG_LOGGING_LEVEL=info
      - JUNHONG_LOGGING_DEVELOPMENT=false
      # 对象存储配置
      - JUNHONG_STORAGE_PROVIDER=s3
      - JUNHONG_STORAGE_S3_ENDPOINT=https://obs-helf.cucloud.cn
      - JUNHONG_STORAGE_S3_REGION=cn-langfang-2
      - JUNHONG_STORAGE_S3_BUCKET=cmp
      - JUNHONG_STORAGE_S3_ACCESS_KEY_ID=598F558CF6FF46E79D1CFC607852378C9523
      - JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY=8393425DCB2F48F1914FF39DCBC6C7B17325
      - JUNHONG_STORAGE_S3_USE_SSL=false
      - JUNHONG_STORAGE_S3_PATH_STYLE=true
      # Gateway 配置（可选）
      - JUNHONG_GATEWAY_BASE_URL=https://lplan.whjhft.com/openapi
      - JUNHONG_GATEWAY_APP_ID=60bgt1X8i7AvXqkd
      - JUNHONG_GATEWAY_APP_SECRET=BZeQttaZQt0i73moF
      - JUNHONG_GATEWAY_TIMEOUT=30
      # 微信公众号配置（可选）
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_ID=your_app_id
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_SECRET=your_app_secret
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_TOKEN=your_token
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_AES_KEY=your_aes_key
      # - JUNHONG_WECHAT_OFFICIAL_ACCOUNT_OAUTH_REDIRECT_URL=https://your-domain.com/callback
      # 微信支付配置（可选）
      # - JUNHONG_WECHAT_PAYMENT_APP_ID=your_app_id
      # - JUNHONG_WECHAT_PAYMENT_MCH_ID=your_mch_id
      # - JUNHONG_WECHAT_PAYMENT_API_V3_KEY=your_32_char_api_v3_key
      # - JUNHONG_WECHAT_PAYMENT_API_V2_KEY=your_api_v2_key
      # - JUNHONG_WECHAT_PAYMENT_CERT_PATH=/app/certs/apiclient_cert.pem
      # - JUNHONG_WECHAT_PAYMENT_KEY_PATH=/app/certs/apiclient_key.pem
      # - JUNHONG_WECHAT_PAYMENT_SERIAL_NO=your_serial_no
      # - JUNHONG_WECHAT_PAYMENT_NOTIFY_URL=https://your-domain.com/api/callback/wechat-pay
      # - JUNHONG_WECHAT_PAYMENT_HTTP_DEBUG=false
      # - JUNHONG_WECHAT_PAYMENT_TIMEOUT=30s
    volumes:
      - ./logs:/app/logs
      # 微信支付证书目录（如果使用微信支付，需要挂载证书）
      # - ./certs:/app/certs:ro
    networks:
      - junhong-network
    depends_on:
      api:
        condition: service_healthy
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

networks:
  junhong-network:
    driver: bridge
