File size: 1,789 Bytes
b6db694
56e0051
0d8512e
ae8b600
d0c18f0
 
 
 
 
0d8512e
 
 
 
 
d0c18f0
e5e756a
 
 
 
 
 
 
581c269
57df967
bb96b1a
d0c18f0
 
57df967
0d8512e
 
 
 
 
 
 
bb96b1a
 
d0c18f0
57df967
bb96b1a
d0c18f0
 
57df967
358516e
 
 
 
b6db694
bb96b1a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
FROM python:3.11-slim

# 安装 uv 和 Lightpanda 下载所需的基础工具。
RUN apt-get update && apt-get install -y curl ca-certificates tar gzip ffmpeg \
    && curl -LsSf https://astral.sh/uv/install.sh | sh \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

ENV PATH="/root/.local/bin:$PATH"

# Lightpanda 配置(browser_mcp_plugin 使用)
ENV LIGHTPANDA_BINARY="/usr/local/bin/lightpanda"
ENV LIGHTPANDA_AUTOSTART="true"
ENV LIGHTPANDA_PORT="9222"

# HuggingFace 缓存目录(CPU-only Space 部署)
ENV HF_HOME="/app/data/huggingface"
ENV HF_HUB_CACHE="/app/data/huggingface/cache"
ENV HF_HUB_ENABLE_HF_TRANSFER="1"
# CPU-only 环境约束
ENV CUDA_VISIBLE_DEVICES=""

WORKDIR /app

# 安装 Python 依赖。
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

# 安装 Lightpanda 浏览器二进制(nightly release)。
# 说明:官方不提供 Windows 二进制;Linux x86_64 与 glibc 兼容;
# musl 系统(Alpine)需自行编译。
RUN curl -fL -o /usr/local/bin/lightpanda \
        https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux \
    && chmod +x /usr/local/bin/lightpanda \
    && /usr/local/bin/lightpanda version || echo "lightpanda installed (version probe failed)"

# 复制前端构建产物(线下已构建)。
COPY dist/frontend/ ./dist/frontend/

# 复制应用代码。
COPY app/ ./app
COPY plugins/ ./plugins

# 清理 Python 字节码缓存(避免镜像缓存导致 import 旧路径)
RUN find /app -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true \
    && find /app -name "*.pyc" -delete 2>/dev/null || true

EXPOSE 7860
CMD ["uv", "run", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860", "--proxy-headers", "--forwarded-allow-ips", "*"]