# Sanguo VeighNa Docker 镜像 - NAS 适配版
# 使用 Python 3.10（Synology NAS 已有镜像）
# 单阶段构建，简化部署流程

FROM python:3.10-slim

# 设置环境变量
ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    VNPY_LOG_LEVEL=INFO \
    TA_LIBRARY_PATH=/usr/local/lib \
    TA_INCLUDE_PATH=/usr/local/include

# 换国内 debian 镜像(清华,trixie deb822 格式;原 deb.debian.org 国内不稳 apt 反复重试)
RUN { sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g; s|security.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources 2>/dev/null || sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g; s|security.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list 2>/dev/null; }

# 安装运行时和编译依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    build-essential \
    wget \
    gcc \
    g++ \
    make \
    libc6-dev \
    && rm -rf /var/lib/apt/lists/*

# 下载并编译 TA-Lib
RUN wget -q http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz \
    && tar -xzf ta-lib-0.4.0-src.tar.gz \
    && cd ta-lib \
    && ./configure --prefix=/usr \
    && make \
    && make install \
    && cd .. \
    && rm -rf ta-lib ta-lib-0.4.0-src.tar.gz

# 更新 ldconfig
RUN ldconfig

# 设置工作目录
WORKDIR /app

# 创建数据目录
RUN mkdir -p /app/data /app/logs /app/config /app/temp

# 复制 requirements 并安装依赖
COPY requirements-docker.txt .
RUN pip install --no-cache-dir --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip install --no-cache-dir -r requirements-docker.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 复制应用代码（包含所有 sanguo 模块）
COPY sanguo_web/ /app/sanguo_web/
COPY vnpy_v4.4.0/vnpy/ /app/vnpy/
COPY sanguo_trader/ /app/sanguo_trader/
COPY sanguo_research/ /app/sanguo_research/
COPY sanguo_data/ /app/sanguo_data/
COPY sanguo_common/ /app/sanguo_common/

# Python 路径(spawn 子进程继承 env 不继承 sys.path;放 COPY 后让 apt/TA-Lib/pip 层缓存命中,
# 避免 sourceforge wget 卡——ENV 在前会导致其后所有层 cache miss 触发 TA-Lib 重编译)
ENV PYTHONPATH=/app:/app/vnpy_v4.4.0

# 复制启动脚本
COPY entrypoint.sh /app/
RUN chmod +x /app/entrypoint.sh

# 暴露端口
EXPOSE 8000 8080

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
    CMD curl -f http://localhost:8000/health || exit 1

# 启动命令
ENTRYPOINT ["/app/entrypoint.sh"]
