From 751059cb01af371a92acf34c5598dcd6b84688de Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sun, 31 May 2026 16:44:27 +0300 Subject: [PATCH] fix(tradein): camoufox fetch under app-user so runtime finds Firefox (#884) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build-verify on the deploy host (2026-05-31) showed the camoufox Firefox build landed in /root/.cache/camoufox (RUN python -m camoufox fetch ran as root), but the runtime app user (uid 1000) resolves the cache to /home/app/.cache/camoufox → 'browser not found' the moment scraper_fetch_mode flips to browser. Fix: run the fetch AFTER USER app + set explicit ENV HOME=/home/app (Docker does not auto-set HOME from USER, and camoufox/platformdirs keys the cache off $HOME). Now build-time fetch and runtime both use /home/app/.cache/camoufox. Verified: A) 'camoufox path' as app = /home/app/.cache/camoufox; B) that dir was empty pre-fix while /root/.cache was root-only (Permission denied to app). Dormant change — scraper_fetch_mode default stays curl_cffi (no runtime behavior change), unblocks Phase 1 (#883). Refs #884, #883 --- tradein-mvp/backend/Dockerfile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tradein-mvp/backend/Dockerfile b/tradein-mvp/backend/Dockerfile index 38876e26..aa243114 100644 --- a/tradein-mvp/backend/Dockerfile +++ b/tradein-mvp/backend/Dockerfile @@ -56,13 +56,18 @@ COPY --from=builder --chown=app:app /app/.venv /app/.venv COPY --from=builder --chown=app:app /app/app /app/app COPY --from=builder --chown=app:app /app/scripts /app/scripts -# Загружаем Firefox-сборку для camoufox (#884). -# Слой кешируется: пересобирается только при изменении .venv (обновление camoufox). -# ~960MB. CI/devops-verify required — не запускать локально без намерения скачать. -RUN python -m camoufox fetch - USER app +# HOME должен быть явным: Docker НЕ выставляет $HOME по USER, а camoufox/platformdirs +# резолвит кэш Firefox как $HOME/.cache/camoufox. Без этого fetch (под root) клал браузер +# в /root/.cache, а рантайм-app искал в /home/app/.cache → "browser not found" в browser-mode. +# (подтверждено сборкой+прогоном образа на деплой-хосте 2026-05-31, баг из #884.) +ENV HOME=/home/app + +# Загружаем Firefox-сборку для camoufox (#884) — ПОД app-юзером, чтобы кэш совпал с рантаймом. +# Слой кешируется: пересобирается только при изменении .venv (обновление camoufox). ~960MB. +RUN python -m camoufox fetch + EXPOSE 8000 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]