# ============================================================
# Troubleshoot AI Assistant — Docker 镜像
# ============================================================
# 基础镜像：python:3.11-slim（Debian bookworm，含 bash）
# 运行时：Flask 内置 server（单进程，APScheduler 兼容）
# 数据持久化：通过 volume 挂载，不写入镜像层
# ============================================================

FROM python:3.11-slim AS base

# 系统依赖：bash（LocalExecutor 执行检测脚本）
# 不装 docker CLI —— 不挂载 docker.sock，避免影响宿主机其他容器
RUN apt-get update && apt-get install -y --no-install-recommends \
    bash \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# ---------- 依赖层（利用 Docker 缓存） ----------
COPY skill/code/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt

# ---------- 代码层 ----------
COPY skill/code/web/ /app/web/

# 复制知识库 SKILL.md（问题排查助手 prompt 模板）
COPY skill/code/SKILL.md /app/SKILL.md

# 运行时数据目录（volume 挂载点，容器内不写数据到镜像层）
RUN mkdir -p /app/data \
    && mkdir -p /app/web/service_monitor/data/reports \
    && mkdir -p /app/web/cache \
    && mkdir -p /app/web/logs

# 修复 Windows 开发环境产生的 CRLF 行尾（bash 脚本在 Linux 必须是 LF）
RUN find /app/web/service_monitor/assets -name '*.sh' -o -name '*.template' \
    | xargs -r sed -i 's/\r$//'

# 环境变量
ENV FLASK_DEBUG=0 \
    PYTHONIOENCODING=utf-8 \
    TROUBLESHOOT_ROOT=/app \
    LANG=C.UTF-8

EXPOSE 8088

WORKDIR /app/web

# 单进程启动（不用 gunicorn 多 worker，避免 APScheduler 多实例冲突）
CMD ["python3", "server.py"]
