|
|
@@ -2,16 +2,21 @@ FROM python:3.12-slim-bookworm
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
-# 安装依赖(uv + lock 文件 hash 校验)
|
|
|
+# 从官方镜像拷贝 uv 二进制
|
|
|
+COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
|
+
|
|
|
+# 先安装依赖(利用 Docker 层缓存)
|
|
|
COPY pyproject.toml uv.lock ./
|
|
|
-RUN pip install --no-cache-dir uv && \
|
|
|
- uv pip install --system --frozen --no-cache && \
|
|
|
- pip uninstall -y uv
|
|
|
+RUN --mount=type=cache,target=/root/.cache/uv \
|
|
|
+ uv sync --locked --no-install-project --no-dev
|
|
|
|
|
|
-# 复制 MCP 服务器代码
|
|
|
+# 复制 MCP 服务器代码和 trendradar 模块
|
|
|
COPY mcp_server/ ./mcp_server/
|
|
|
-# 复制 trendradar 模块(MCP 服务需要读取 SQLite 数据)
|
|
|
COPY trendradar/ ./trendradar/
|
|
|
+RUN --mount=type=cache,target=/root/.cache/uv \
|
|
|
+ uv sync --locked --no-dev
|
|
|
+
|
|
|
+ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
|
|
# 创建必要目录
|
|
|
RUN mkdir -p /app/config /app/output
|