# tradein-browser — camoufox Playwright WS server (изолированный контейнер Firefox). # Backend подключается к этому контейнеру через playwright.firefox.connect. FROM python:3.12-slim ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 # Firefox runtime libs + ca-certificates для TLS RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && apt-get install -y --no-install-recommends \ libgtk-3-0 \ libasound2 \ libdbus-glib-1-2 \ libx11-xcb1 \ libxtst6 \ ca-certificates \ && useradd --create-home --uid 1000 app WORKDIR /app # camoufox[geoip] тянет playwright как зависимость RUN pip install --no-cache-dir "camoufox[geoip]" COPY server.py ./server.py # CRITICAL (#899): USER + ENV HOME должны быть установлены ДО fetch, # чтобы Firefox-сборка легла в /home/app/.cache — туда же, куда рантайм её ищет. # Без этого fetch под root кладёт браузер в /root/.cache и app при старте # не находит Firefox ("browser not found"). USER app ENV HOME=/home/app RUN python -m camoufox fetch EXPOSE 3000 CMD ["python", "server.py"]