lengfeng1360 commited on
Commit
5d703c8
·
verified ·
1 Parent(s): 9b7863a

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +117 -115
Dockerfile CHANGED
@@ -1,116 +1,118 @@
1
- # Dockerfile
2
-
3
- #ARG PROXY_ADDR="http://host.docker.internal:7890" Linxux 下使用 host.docker.internal 可能会有问题,建议使用实际的代理地址
4
- FROM python:3.10-slim-bookworm AS builder
5
-
6
- ARG DEBIAN_FRONTEND=noninteractive
7
- ARG PROXY_ADDR
8
-
9
- RUN if [ -n "$PROXY_ADDR" ]; then \
10
- printf 'Acquire::http::Proxy "%s";\nAcquire::https::Proxy "%s";\n' "$PROXY_ADDR" "$PROXY_ADDR" > /etc/apt/apt.conf.d/99proxy; \
11
- fi && \
12
- apt-get update && \
13
- apt-get install -y --no-install-recommends curl \
14
- && apt-get clean && rm -rf /var/lib/apt/lists/* && \
15
- if [ -n "$PROXY_ADDR" ]; then rm -f /etc/apt/apt.conf.d/99proxy; fi
16
-
17
- ENV HTTP_PROXY=${PROXY_ADDR}
18
- ENV HTTPS_PROXY=${PROXY_ADDR}
19
-
20
- ENV POETRY_HOME="/opt/poetry"
21
- ENV POETRY_VERSION=1.8.3
22
- RUN curl -sSL https://install.python-poetry.org | python3 - --version ${POETRY_VERSION}
23
- ENV PATH="${POETRY_HOME}/bin:${PATH}"
24
-
25
- WORKDIR /app_builder
26
- COPY pyproject.toml poetry.lock ./
27
- RUN poetry config virtualenvs.create false --local && \
28
- poetry install --no-root --no-dev --no-interaction --no-ansi
29
-
30
- FROM python:3.10-slim-bookworm
31
-
32
- ARG DEBIAN_FRONTEND=noninteractive
33
- ARG PROXY_ADDR
34
-
35
- ENV HTTP_PROXY=${PROXY_ADDR}
36
- ENV HTTPS_PROXY=${PROXY_ADDR}
37
-
38
- # 步骤 1: 安装所有系统依赖。
39
- # Playwright 的依赖也在这里一并安装。
40
- RUN \
41
- if [ -n "$PROXY_ADDR" ]; then \
42
- printf 'Acquire::http::Proxy "%s";\nAcquire::https::Proxy "%s";\n' "$PROXY_ADDR" "$PROXY_ADDR" > /etc/apt/apt.conf.d/99proxy; \
43
- fi && \
44
- apt-get update && \
45
- apt-get install -y --no-install-recommends \
46
- libatk1.0-0 libatk-bridge2.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libgtk-3-0 libnspr4 libnss3 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxrender1 libxtst6 ca-certificates fonts-liberation libasound2 libpangocairo-1.0-0 libpango-1.0-0 libu2f-udev \
47
- supervisor curl \
48
- && \
49
- # 清理工作
50
- apt-get clean && \
51
- rm -rf /var/lib/apt/lists/* && \
52
- if [ -n "$PROXY_ADDR" ]; then rm -f /etc/apt/apt.conf.d/99proxy; fi
53
-
54
- RUN groupadd -r appgroup && useradd -r -g appgroup -s /bin/bash -d /app appuser
55
-
56
- WORKDIR /app
57
-
58
- # 步骤 2: 复制 Python 包和可执行文件。
59
- # 这是关键的顺序调整:在使用 playwright 之前先把它复制进来。
60
- COPY --from=builder /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/
61
- COPY --from=builder /usr/local/bin/ /usr/local/bin/
62
- COPY --from=builder /opt/poetry/bin/poetry /usr/local/bin/poetry
63
-
64
- # 复制应用代码
65
- COPY . .
66
-
67
- # 步骤 3: 现在 Python 模块已存在,可以安全地运行这些命令。
68
- # 注意:我们不再需要 `playwright install-deps`,因为依赖已在上面的 apt-get 中安装。
69
- RUN camoufox fetch && \
70
- python -m playwright install firefox
71
-
72
- # 创建目录和设置权限
73
- RUN mkdir -p /app/logs && \
74
- mkdir -p /app/auth_profiles/active && \
75
- mkdir -p /app/auth_profiles/saved && \
76
- mkdir -p /app/certs && \
77
- mkdir -p /app/browser_utils/custom_scripts && \
78
- mkdir -p /home/appuser/.cache/ms-playwright && \
79
- mkdir -p /home/appuser/.mozilla && \
80
- chown -R appuser:appgroup /app && \
81
- chown -R appuser:appgroup /home/appuser
82
-
83
- COPY supervisord.conf /etc/supervisor/conf.d/app.conf
84
-
85
- # 修复 camoufox 缓存逻辑
86
- RUN mkdir -p /var/cache/camoufox && \
87
- if [ -d /root/.cache/camoufox ]; then cp -a /root/.cache/camoufox/* /var/cache/camoufox/; fi && \
88
- mkdir -p /app/.cache && \
89
- ln -s /var/cache/camoufox /app/.cache/camoufox
90
-
91
- RUN python update_browserforge_data.py
92
-
93
- # 清理代理环境变量
94
- ENV HTTP_PROXY=""
95
- ENV HTTPS_PROXY=""
96
-
97
- EXPOSE 2048
98
- EXPOSE 3120
99
-
100
- USER appuser
101
- ENV HOME=/app
102
- ENV PLAYWRIGHT_BROWSERS_PATH=/home/appuser/.cache/ms-playwright
103
-
104
- ENV PYTHONUNBUFFERED=1
105
-
106
- ENV PORT=8000
107
- ENV DEFAULT_FASTAPI_PORT=2048
108
- ENV DEFAULT_CAMOUFOX_PORT=9222
109
- ENV STREAM_PORT=3120
110
- ENV SERVER_LOG_LEVEL=INFO
111
- ENV DEBUG_LOGS_ENABLED=false
112
- ENV AUTO_CONFIRM_LOGIN=true
113
- ENV SERVER_PORT=2048
114
- ENV INTERNAL_CAMOUFOX_PROXY=""
115
-
 
 
116
  CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/app.conf"]
 
1
+ # Dockerfile
2
+
3
+ #ARG PROXY_ADDR="http://host.docker.internal:7890" Linxux 下使用 host.docker.internal 可能会有问题,建议使用实际的代理地址
4
+ FROM python:3.10-slim-bookworm AS builder
5
+
6
+ ARG DEBIAN_FRONTEND=noninteractive
7
+ ARG PROXY_ADDR
8
+
9
+ RUN if [ -n "$PROXY_ADDR" ]; then \
10
+ printf 'Acquire::http::Proxy "%s";\nAcquire::https::Proxy "%s";\n' "$PROXY_ADDR" "$PROXY_ADDR" > /etc/apt/apt.conf.d/99proxy; \
11
+ fi && \
12
+ apt-get update && \
13
+ apt-get install -y --no-install-recommends curl \
14
+ && apt-get clean && rm -rf /var/lib/apt/lists/* && \
15
+ if [ -n "$PROXY_ADDR" ]; then rm -f /etc/apt/apt.conf.d/99proxy; fi
16
+
17
+ ENV HTTP_PROXY=${PROXY_ADDR}
18
+ ENV HTTPS_PROXY=${PROXY_ADDR}
19
+
20
+ ENV POETRY_HOME="/opt/poetry"
21
+ ENV POETRY_VERSION=1.8.3
22
+ RUN curl -sSL https://install.python-poetry.org | python3 - --version ${POETRY_VERSION}
23
+ ENV PATH="${POETRY_HOME}/bin:${PATH}"
24
+
25
+ WORKDIR /app_builder
26
+ COPY pyproject.toml poetry.lock ./
27
+ RUN poetry config virtualenvs.create false --local && \
28
+ poetry install --no-root --no-dev --no-interaction --no-ansi
29
+
30
+ FROM python:3.10-slim-bookworm
31
+
32
+ ARG DEBIAN_FRONTEND=noninteractive
33
+ ARG PROXY_ADDR
34
+
35
+ ENV HTTP_PROXY=${PROXY_ADDR}
36
+ ENV HTTPS_PROXY=${PROXY_ADDR}
37
+
38
+ # 步骤 1: 安装所有系统依赖。
39
+ # Playwright 的依赖也在这里一并安装。
40
+ RUN \
41
+ if [ -n "$PROXY_ADDR" ]; then \
42
+ printf 'Acquire::http::Proxy "%s";\nAcquire::https::Proxy "%s";\n' "$PROXY_ADDR" "$PROXY_ADDR" > /etc/apt/apt.conf.d/99proxy; \
43
+ fi && \
44
+ apt-get update && \
45
+ apt-get install -y --no-install-recommends \
46
+ libatk1.0-0 libatk-bridge2.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libgtk-3-0 libnspr4 libnss3 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxrender1 libxtst6 ca-certificates fonts-liberation libasound2 libpangocairo-1.0-0 libpango-1.0-0 libu2f-udev \
47
+ supervisor curl \
48
+ && \
49
+ # 清理工作
50
+ apt-get clean && \
51
+ rm -rf /var/lib/apt/lists/* && \
52
+ if [ -n "$PROXY_ADDR" ]; then rm -f /etc/apt/apt.conf.d/99proxy; fi
53
+
54
+ RUN groupadd -r appgroup && useradd -r -g appgroup -s /bin/bash -d /app appuser
55
+
56
+ WORKDIR /app
57
+
58
+ # 步骤 2: 复制 Python 包和可执行文件。
59
+ # 这是关键的顺序调整:在使用 playwright 之前先把它复制进来。
60
+ COPY --from=builder /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/
61
+ COPY --from=builder /usr/local/bin/ /usr/local/bin/
62
+ COPY --from=builder /opt/poetry/bin/poetry /usr/local/bin/poetry
63
+
64
+ # 复制应用代码
65
+ COPY . .
66
+
67
+ # 步骤 3: 现在 Python 模块已存在,可以安全地运行这些命令。
68
+ # 注意:我们不再需要 `playwright install-deps`,因为依赖已在上面的 apt-get 中安装。
69
+ RUN camoufox fetch && \
70
+ python -m playwright install firefox
71
+
72
+ # 创建目录和设置权限
73
+ RUN mkdir -p /app/logs && \
74
+ mkdir -p /app/auth_profiles/active && \
75
+ mkdir -p /app/auth_profiles/saved && \
76
+ mkdir -p /app/certs && \
77
+ mkdir -p /app/browser_utils/custom_scripts && \
78
+ mkdir -p /home/appuser/.cache/ms-playwright && \
79
+ mkdir -p /home/appuser/.mozilla && \
80
+ chown -R appuser:appgroup /app && \
81
+ chown -R appuser:appgroup /home/appuser
82
+
83
+ COPY supervisord.conf /etc/supervisor/conf.d/app.conf
84
+
85
+ # 修复 camoufox 缓存逻辑
86
+ RUN mkdir -p /var/cache/camoufox && \
87
+ if [ -d /root/.cache/camoufox ]; then cp -a /root/.cache/camoufox/* /var/cache/camoufox/; fi && \
88
+ mkdir -p /app/.cache && \
89
+ ln -s /var/cache/camoufox /app/.cache/camoufox
90
+
91
+ RUN python update_browserforge_data.py
92
+
93
+ # 清理代理环境变量
94
+ ENV HTTP_PROXY=""
95
+ ENV HTTPS_PROXY=""
96
+
97
+ EXPOSE 2048
98
+ EXPOSE 3120
99
+
100
+ USER appuser
101
+ ENV HOME=/app
102
+ ENV PLAYWRIGHT_BROWSERS_PATH=/home/appuser/.cache/ms-playwright
103
+
104
+ ENV PYTHONUNBUFFERED=1
105
+
106
+ ENV PORT=8000
107
+ ENV DEFAULT_FASTAPI_PORT=2048
108
+ ENV DEFAULT_CAMOUFOX_PORT=9222
109
+ ENV STREAM_PORT=3120
110
+ ENV SERVER_LOG_LEVEL=INFO
111
+ ENV DEBUG_LOGS_ENABLED=false
112
+ ENV AUTO_CONFIRM_LOGIN=true
113
+ ENV SERVER_PORT=2048
114
+ ENV INTERNAL_CAMOUFOX_PROXY=""
115
+
116
+
117
+
118
  CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/app.conf"]