fix(docker): 为容器内 rakuten 用户建 home 目录,修复 Chromium 启动 SIGTRAP
rakuten 用户是 useradd --no-create-home 建的,HOME 指向不存在的目录。 Chromium 启动时要写 $HOME/.config、~/.pki,写不了就 CHECK 失败触发 int3(SIGTRAP)自杀,Playwright 侧表现为 BrowserType.launch: Target closed。 - Dockerfile / Dockerfile.trading:ENV 增加 HOME=/home/rakuten, mkdir + chown 补上 /home/rakuten - 抓取镜像同样修:浏览器兜底(browser_fallback)也是非 root 跑 Chromium, 属同一隐患 实测验证:docker run 加 -e HOME=/tmp 后 chrome 可正常 --dump-dom 输出
This commit is contained in:
+6
-3
@@ -47,6 +47,9 @@ ENV PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
VIRTUAL_ENV=/app/.venv \
|
||||
PATH="/app/.venv/bin:${PATH}" \
|
||||
# rakuten 用户是 --no-create-home 建的;Chromium(浏览器兜底)启动要写
|
||||
# $HOME/.config、~/.pki,HOME 指向不存在的目录时会 CHECK 失败 SIGTRAP 自杀
|
||||
HOME=/home/rakuten \
|
||||
PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \
|
||||
# Playwright 浏览器二进制走 npmmirror 镜像,避免从 azureedge 拉取缓慢
|
||||
PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.npmmirror.com/binaries/playwright \
|
||||
@@ -108,9 +111,9 @@ WORKDIR /app
|
||||
COPY --from=builder /app/.venv /app/.venv
|
||||
COPY --from=builder /app/app /app/app
|
||||
|
||||
# 可写目录:logs(Loguru)、浏览器二进制(~300MB)
|
||||
RUN mkdir -p /app/logs /ms-playwright \
|
||||
&& chown -R rakuten:rakuten /app /ms-playwright
|
||||
# 可写目录:logs(Loguru)、浏览器二进制(~300MB)、/home/rakuten(Chromium 的 ~/.config 等)
|
||||
RUN mkdir -p /app/logs /ms-playwright /home/rakuten \
|
||||
&& chown -R rakuten:rakuten /app /ms-playwright /home/rakuten
|
||||
|
||||
USER rakuten
|
||||
|
||||
|
||||
+6
-3
@@ -48,6 +48,9 @@ ENV PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
VIRTUAL_ENV=/app/.venv \
|
||||
PATH="/app/.venv/bin:${PATH}" \
|
||||
# rakuten 用户是 --no-create-home 建的;Chromium 启动要写 $HOME/.config、~/.pki,
|
||||
# HOME 指向不存在的目录时会 CHECK 失败直接 SIGTRAP(int3)自杀
|
||||
HOME=/home/rakuten \
|
||||
PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \
|
||||
PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.npmmirror.com/binaries/playwright \
|
||||
# 落库时间戳全是 UTC aware(local_db/task_queue 用 datetime.now(timezone.utc)),
|
||||
@@ -155,10 +158,10 @@ ENTRYPOINT_SH
|
||||
|
||||
# 可写目录:logs(Loguru)、data(订单 SQLite + 证据)、.auth(登录态 cookie)、
|
||||
# .browser-data(login.py 的持久化浏览器目录)、/ms-playwright(Chromium 二进制)、
|
||||
# /tmp/.X11-unix(Xvfb socket,非 root 也要能建)
|
||||
RUN mkdir -p /app/logs /app/data /app/.auth /app/.browser-data /ms-playwright /tmp/.X11-unix \
|
||||
# /tmp/.X11-unix(Xvfb socket,非 root 也要能建)、/home/rakuten(Chromium 的 ~/.config 等)
|
||||
RUN mkdir -p /app/logs /app/data /app/.auth /app/.browser-data /ms-playwright /tmp/.X11-unix /home/rakuten \
|
||||
&& chmod 1777 /tmp/.X11-unix \
|
||||
&& chown -R rakuten:rakuten /app /ms-playwright
|
||||
&& chown -R rakuten:rakuten /app /ms-playwright /home/rakuten
|
||||
|
||||
USER rakuten
|
||||
|
||||
|
||||
Reference in New Issue
Block a user