From e4975b7be3d3dc9eee49b42fd7d9b2618161bb13 Mon Sep 17 00:00:00 2001 From: Jiang Date: Tue, 11 Aug 2026 10:10:21 +0800 Subject: [PATCH] fix(container): exclude runtime configuration from image --- .dockerignore | 7 +++++-- Dockerfile | 6 ++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.dockerignore b/.dockerignore index 25bdfa1..af63b08 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,9 +11,12 @@ dist/ package/ temp/ data/ -# db_inp/ +db_inp/ inp/ -# .env +.env +.env.* +logs/ +coverage/ *.pyc *.dump app/algorithms/health/model/my_survival_forest_model_quxi.joblib diff --git a/Dockerfile b/Dockerfile index bea8fce..f144e59 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,13 +14,11 @@ COPY requirements.txt . RUN pip install --no-cache-dir uv RUN uv pip install --system --no-cache-dir -r requirements.txt -# 将代码放入子目录 'app',将数据放入子目录 'db_inp' -# 这样临时文件默认会生成在 /app 下,而代码在 /app/app 下,实现了分离 +# 本地数据目录和环境变量在运行时通过 Compose 挂载或注入, +# 不应进入镜像构建上下文。 COPY app ./app RUN python -c "from pathlib import Path; from zipfile import ZipFile; model_dir = Path('app/algorithms/health/model'); zip_path = model_dir / 'my_survival_forest_model_quxi.zip'; joblib_name = 'my_survival_forest_model_quxi.joblib'; joblib_path = model_dir / joblib_name; assert zip_path.exists(), f'Model archive not found: {zip_path}'; archive = ZipFile(zip_path); archive.extract(joblib_name, model_dir); archive.close(); assert joblib_path.exists(), f'Model file not extracted: {joblib_path}'" && \ rm -f app/algorithms/health/model/my_survival_forest_model_quxi.zip -# COPY db_inp ./db_inp -COPY .env . RUN mkdir -p db_inp temp data inp # 设置 PYTHONPATH 以便 uvicorn 找到 app 模块