# CareerNexus 职联 —— 一体化镜像（默认 demo 模式，全程离线）
#
# 默认构建：轻量离线镜像（词表归一化，无模型权重）
#   docker build -t careernexus .
#
# 语义增强变体：附带 sentence-transformers + BGE-M3 权重（镜像约 +4GB，
# 构建期需要联网下载依赖与权重；国内建议加 MODELSCOPE 源）
#   docker build --build-arg INCLUDE_EMBED=1 -t careernexus:semantic .
FROM python:3.11-slim AS base

WORKDIR /app

# 先装依赖，利用镜像层缓存
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# ---- 可选：语义向量通道（BGE-M3） ----
ARG INCLUDE_EMBED=0
RUN if [ "$INCLUDE_EMBED" = "1" ]; then \
      pip install --no-cache-dir sentence-transformers modelscope && \
      modelscope download --model BAAI/bge-m3 --local_dir /app/models/bge-m3 ; \
    fi

# 拷贝源码并生成数据集 + 构建图谱（保证容器内开箱即跑）
COPY . .
# 语义变体：把权重路径写入运行时设置（若本地已存在 models/ 目录则随源码一起拷贝）
RUN if [ "$INCLUDE_EMBED" = "1" ]; then \
      printf '{\n  "embed_model_path": "/app/models/bge-m3"\n}\n' > config.json ; \
    fi && \
    python scripts/generate_dataset.py && python scripts/run_demo.py

EXPOSE 9008
CMD ["python", "main.py"]
