# 生产用 OpenObserve(单机)。相对本地版 docker-compose.yml 的区别:
#   - 端口只绑 127.0.0.1 → 公网/外网都到不了(UI 访问走 SSH 隧道或 nginx 反代,见 README)
#   - root 密码走环境变量(放同目录 .env,已 gitignore,勿提交)
#   - 数据 bind-mount 到宿主 /data 分区(需预建目录 + 确认容器可写)+ CPU/内存上限(与 app/PG 共存防抢内存)
#
# 用法:
#   1) 本目录建 .env(已 gitignore):
#        OO_ROOT_PASSWORD=<强随机串>     # 生成: python -c "import secrets;print(secrets.token_urlsafe(24))"
#   2) docker compose -f docker-compose.prod.yml up -d
#   3) 开机自起: sudo systemctl enable docker
services:
  openobserve:
    image: public.ecr.aws/zinclabs/openobserve:v0.91.2
    container_name: openobserve
    ports:
      - "127.0.0.1:5080:5080"          # 只绑本机，安全
    environment:
      ZO_ROOT_USER_EMAIL: "admin@shaguabijia.com"
      ZO_ROOT_USER_PASSWORD: "${OO_ROOT_PASSWORD:?请先在 deploy/openobserve/.env 里设 OO_ROOT_PASSWORD}"
      ZO_DATA_DIR: "/data"
      ZO_COMPACT_DATA_RETENTION_DAYS: "30"                # 超 30 天自动删,防爆盘(默认 3650 天=10年)
      ZO_TELEMETRY: "false"                               # 关匿名遥测(内网自用);变量名是 ZO_TELEMETRY,不是 *_ENABLED
    volumes:
      - /data/openobserve/data:/data   # 绑定挂载到宿主机的 /data/openobserve/data 目录（建议该目录所在分区有 20G+ 空间）
    restart: unless-stopped
    deploy:
      resources:
        limits:                        # 硬上限:防 OO 查询/ingest 抢爆 CPU/内存,拖垮同机 PG+app
          cpus: '2.0'                  
          memory: 3G                   
    logging:                                              # 容器 stdout 日志上限,防爆盘
      driver: json-file
      options: { max-size: "10m", max-file: "3" }
