Files
wiki_crawler/Dockerfile

40 lines
1.1 KiB
Docker
Raw Normal View History

2025-12-23 10:28:15 +08:00
# 1. 使用官方 uv 镜像
FROM ghcr.io/astral-sh/uv:latest AS uv_setup
# 2. 运行环境
FROM python:3.12-slim
WORKDIR /app
# 复制 uv 命令
COPY --from=uv_setup /uv /uvx /bin/
# 安装系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
libpq-dev \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖描述文件
COPY pyproject.toml uv.lock ./
# 【核心修复】使用 uv sync
# --frozen: 强制要求 uv.lock 必须是最新的
# --no-dev: 不安装开发依赖(如 pytest 等),减小体积
# --no-install-project: 先不安装当前项目代码,只装依赖(优化缓存)
RUN uv sync --frozen --no-dev --no-install-project
# 复制项目代码
COPY . .
# 【关键点】将虚拟环境的 bin 目录加入系统路径
# 这样你运行 python 或 uvicorn 时,系统会自动使用 uv 准备好的那个环境
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONPATH=/app
# 暴露端口
2026-01-27 01:41:45 +08:00
EXPOSE 28000
2025-12-23 10:28:15 +08:00
# 启动命令
# 现在直接调用 uvicorn 即可,它会自动找到 .venv 里的版本
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]