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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +37 -22
Dockerfile CHANGED
@@ -1,6 +1,6 @@
1
  FROM python:3.13-slim-bookworm AS builder
2
 
3
- # Build dummy packages to skip installing heavy UI dependencies
4
  RUN apt-get update \
5
  && apt-get install -y --no-install-recommends equivs \
6
  && equivs-control libgl1-mesa-dri \
@@ -12,48 +12,63 @@ RUN apt-get update \
12
  && equivs-build adwaita-icon-theme \
13
  && mv adwaita-icon-theme_*.deb /adwaita-icon-theme.deb
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  FROM python:3.13-slim-bookworm
16
 
17
- # Copy dummy packages
18
  COPY --from=builder /*.deb /
 
 
19
 
20
- # Install Chromium and XVFB virtual display
21
  RUN dpkg -i /libgl1-mesa-dri.deb \
22
  && dpkg -i /adwaita-icon-theme.deb \
23
  && apt-get update \
24
- && apt-get install -y --no-install-recommends chromium chromium-common chromium-driver xvfb dumb-init git procps curl xvfb xauth \
25
- && rm -rf /var/lib/apt/lists/* \
26
- && mv /usr/bin/chromedriver /usr/bin/chromedriver-system
 
 
 
 
 
 
27
 
28
- # Create HuggingFace mandatory user: UID 1000
29
- RUN useradd -m -u 1000 user
30
 
31
  WORKDIR /app
32
 
33
- # Clone the FlareSolverr codebase
34
- RUN git clone https://github.com/FlareSolverr/FlareSolverr.git .
35
-
36
- # Relocate chromedriver inward and set ownership
37
- RUN mv /usr/bin/chromedriver-system chromedriver \
38
  && chown -R user:user /app
39
 
40
- # Install Python dependencies
41
  RUN pip install -r requirements.txt --no-cache-dir \
42
  && rm -rf /root/.cache
43
 
44
- # Switch to standard HF user
45
  USER user
46
 
47
- # Ensure crash folder exists as HF prevents root-level creation dynamically
48
  RUN mkdir -p "/app/.config/chromium/Crash Reports/pending"
49
 
50
- # Set environment
51
- ENV LOG_LEVEL=info
52
- ENV HEADLESS=true
53
- ENV PORT=7860
 
 
54
 
55
  EXPOSE 7860
56
 
57
- # Start virtual display & Python solver
58
  ENTRYPOINT ["dumb-init", "xvfb-run", "-a"]
59
- CMD ["python", "-u", "src/flaresolverr.py"]
 
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
  && 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
19
+ RUN apt-get update && apt-get install -y --no-install-recommends curl unzip \
20
+ && curl -Lo /tmp/chrome.zip \
21
+ "https://storage.googleapis.com/chrome-for-testing-public/${CHROME_VERSION}/linux64/chrome-linux64.zip" \
22
+ && curl -Lo /tmp/chromedriver.zip \
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
53
 
54
+ RUN git clone https://github.com/FlareSolverr/FlareSolverr.git . \
 
 
 
 
55
  && chown -R user:user /app
56
 
 
57
  RUN pip install -r requirements.txt --no-cache-dir \
58
  && rm -rf /root/.cache
59
 
 
60
  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
72
 
 
73
  ENTRYPOINT ["dumb-init", "xvfb-run", "-a"]
74
+ CMD ["python", "-u", "src/flaresolverr.py"]