添加docker部署

This commit is contained in:
2025-12-23 10:28:15 +08:00
parent bb57b14cb8
commit 0f44ef1338
3 changed files with 58 additions and 1 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
__pycache__/
.venv
wiki_backend.tar

40
Dockerfile Normal file
View File

@@ -0,0 +1,40 @@
# 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
# 暴露端口
EXPOSE 8000
# 启动命令
# 现在直接调用 uvicorn 即可,它会自动找到 .venv 里的版本
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]

16
docker-compose.yml Normal file
View File

@@ -0,0 +1,16 @@
version: '3.8'
services:
api:
build: . # 自动寻找当前目录下的 Dockerfile
image: wiki-backend:latest
container_name: wiki_backend
ports:
- "8000:8000"
environment:
- DB_USER=postgres
- DB_PASS=DXC_welcome001
- DB_HOST=8.155.144.6
- DB_PORT=25432
- DB_NAME=wiki_crawler
restart: always