# 本地重排服务镜像。 # # 模型不在构建期打包 —— 体积大(约 290MB)且会频繁升级,改为容器启动时按需下载, # 已有则复用。这样换模型只需改环境变量后重启,不用重新 build。 FROM python:3.11-slim # pip 源做成构建参数:国内机器可用清华源显著提速 ARG PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple ARG PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir \ -i "${PIP_INDEX_URL}" \ --trusted-host "${PIP_TRUSTED_HOST}" \ -r requirements.txt COPY app.py download_model.py entrypoint.sh ./ RUN chmod +x entrypoint.sh # 模型目录。挂卷到这里,重启容器时模型不会丢。 ENV MODEL_DIR=/models RUN mkdir -p /models EXPOSE 8000 # slim 镜像里没有 curl,直接用 python 做健康检查 HEALTHCHECK --interval=30s --timeout=5s --start-period=600s --retries=3 \ CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8000/health',timeout=4).status==200 else 1)" CMD ["./entrypoint.sh"]