aanycmn commited on
Commit
ad42a8f
·
verified ·
1 Parent(s): d9a17cb

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +19 -14
Dockerfile CHANGED
@@ -1,6 +1,5 @@
1
  FROM python:3.13-slim-bookworm AS builder
2
 
3
- # Build dummy packages to skip heavy UI dependencies
4
  RUN apt-get update \
5
  && apt-get install -y --no-install-recommends equivs \
6
  && equivs-control libgl1-mesa-dri \
@@ -12,7 +11,6 @@ RUN apt-get update \
12
  && equivs-build adwaita-icon-theme \
13
  && mv adwaita-icon-theme_*.deb /adwaita-icon-theme.deb
14
 
15
- # ── 下载 Chrome for Testing 142.0.7444.175 ──
16
  FROM python:3.13-slim-bookworm AS chrome-downloader
17
 
18
  ARG CHROME_VERSION=142.0.7444.175
@@ -23,30 +21,39 @@ RUN apt-get update && apt-get install -y --no-install-recommends curl unzip \
23
  "https://storage.googleapis.com/chrome-for-testing-public/${CHROME_VERSION}/linux64/chromedriver-linux64.zip" \
24
  && unzip /tmp/chrome.zip -d /opt/ \
25
  && unzip /tmp/chromedriver.zip -d /opt/ \
26
- && chmod +x /opt/chrome-linux64/chrome /opt/chromedriver-linux64/chromedriver
 
 
27
 
28
- # ── 最终镜像 ──
29
  FROM python:3.13-slim-bookworm
30
 
31
  COPY --from=builder /*.deb /
32
  COPY --from=chrome-downloader /opt/chrome-linux64 /opt/chrome
33
  COPY --from=chrome-downloader /opt/chromedriver-linux64/chromedriver /usr/bin/chromedriver
34
 
35
- # 安装 Chrome 运行时依赖(不再安装 chromium 本体)
36
  RUN dpkg -i /libgl1-mesa-dri.deb \
37
  && dpkg -i /adwaita-icon-theme.deb \
38
  && apt-get update \
39
  && apt-get install -y --no-install-recommends \
40
- # Chrome 142 运行时依赖
41
- libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 \
42
- libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 \
43
- libxrandr2 libgbm1 libasound2 libpango-1.0-0 libcairo2 \
 
 
 
44
  libatspi2.0-0 libwayland-client0 \
45
- # xvfb 虚拟显示 + 工具
 
 
 
46
  xvfb dumb-init git procps curl xauth \
47
- && rm -rf /var/lib/apt/lists/*
 
 
 
 
48
 
49
- # 创建 HF 必需的 UID=1000 用户
50
  RUN useradd -m -u 1000 user
51
 
52
  WORKDIR /app
@@ -61,11 +68,9 @@ USER user
61
 
62
  RUN mkdir -p "/app/.config/chromium/Crash Reports/pending"
63
 
64
- # ── 环境变量 ──
65
  ENV LOG_LEVEL=info \
66
  HEADLESS=true \
67
  PORT=7860 \
68
- # 指向 Chrome for Testing 二进制(关键!)
69
  BROWSER_EXECUTABLE_PATH=/opt/chrome/chrome
70
 
71
  EXPOSE 7860
 
1
  FROM python:3.13-slim-bookworm AS builder
2
 
 
3
  RUN apt-get update \
4
  && apt-get install -y --no-install-recommends equivs \
5
  && equivs-control libgl1-mesa-dri \
 
11
  && equivs-build adwaita-icon-theme \
12
  && mv adwaita-icon-theme_*.deb /adwaita-icon-theme.deb
13
 
 
14
  FROM python:3.13-slim-bookworm AS chrome-downloader
15
 
16
  ARG CHROME_VERSION=142.0.7444.175
 
21
  "https://storage.googleapis.com/chrome-for-testing-public/${CHROME_VERSION}/linux64/chromedriver-linux64.zip" \
22
  && unzip /tmp/chrome.zip -d /opt/ \
23
  && unzip /tmp/chromedriver.zip -d /opt/ \
24
+ # FIX: 让所有用户都可读可执行
25
+ && chmod -R a+rx /opt/chrome-linux64 \
26
+ && chmod a+rx /opt/chromedriver-linux64/chromedriver
27
 
 
28
  FROM python:3.13-slim-bookworm
29
 
30
  COPY --from=builder /*.deb /
31
  COPY --from=chrome-downloader /opt/chrome-linux64 /opt/chrome
32
  COPY --from=chrome-downloader /opt/chromedriver-linux64/chromedriver /usr/bin/chromedriver
33
 
 
34
  RUN dpkg -i /libgl1-mesa-dri.deb \
35
  && dpkg -i /adwaita-icon-theme.deb \
36
  && apt-get update \
37
  && apt-get install -y --no-install-recommends \
38
+ # ← FIX: 补全 Chrome 142 所需的完整运行时依赖
39
+ libnss3 libnspr4 \
40
+ libatk1.0-0 libatk-bridge2.0-0 \
41
+ libcups2 libdrm2 \
42
+ libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \
43
+ libgbm1 libasound2 \
44
+ libpango-1.0-0 libcairo2 \
45
  libatspi2.0-0 libwayland-client0 \
46
+ libglib2.0-0 libdbus-1-3 \
47
+ libx11-6 libxcb1 libxext6 \
48
+ libfontconfig1 libfreetype6 libexpat1 \
49
+ fonts-liberation \
50
  xvfb dumb-init git procps curl xauth \
51
+ && rm -rf /var/lib/apt/lists/* \
52
+ # ← FIX: 验证 Chrome 能正常调用(root 下无需 --no-sandbox)
53
+ && /opt/chrome/chrome --version --no-sandbox \
54
+ # ← FIX: 再次确保权限(apt 操作后不变,但显式保险)
55
+ && chmod a+rx /opt/chrome/chrome /usr/bin/chromedriver
56
 
 
57
  RUN useradd -m -u 1000 user
58
 
59
  WORKDIR /app
 
68
 
69
  RUN mkdir -p "/app/.config/chromium/Crash Reports/pending"
70
 
 
71
  ENV LOG_LEVEL=info \
72
  HEADLESS=true \
73
  PORT=7860 \
 
74
  BROWSER_EXECUTABLE_PATH=/opt/chrome/chrome
75
 
76
  EXPOSE 7860