# Среда запуска для imgbot-daemon. Сам код — не наш: проект живёт у агента
# в /home/tgclaude/imgbot и правится им же. Здесь только окружение.
#
# База — официальный образ playwright с тегом ровно под версию из uv.lock
# проекта (playwright 1.62.0): в нём уже есть chromium и его системные
# библиотеки. Именно поэтому в контейнере не нужен костыль
# ~tgclaude/chrome-libs/extract/usr/lib/... , которым это лечилось на хосте.
FROM mcr.microsoft.com/playwright/python:v1.62.0-noble

# В этом образе лежат только браузеры (/ms-playwright, PLAYWRIGHT_BROWSERS_PATH
# уже выставлен), а python-пакета playwright нет — его ставим сами, и версию
# фиксируем ровно 1.62.0 = версия из uv.lock проекта = ревизия chromium-1234,
# вкомпилированная в этот тег. Разъезд версии пакета и образа даёт
# "Executable doesn't exist" при launch(), поэтому теги менять только парой.
#
# Остальное — по фактическим импортам обоих сервисов из этого образа:
#   collector/fetcher → playwright
#   storage/analyze   → pillow
#   daemon            → apscheduler (tzlocal подтянётся зависимостью)
#   app/mcp_server    → mcp (с ним приходят starlette, uvicorn, httpx)
# Версии — из uv.lock проекта, чтобы образ и хостовый venv не разъезжались.
RUN pip install --no-cache-dir \
        playwright==1.62.0 \
        pillow==12.3.0 \
        apscheduler==3.11.3 \
        mcp==1.29.1

# Исходники НЕ копируются в образ — они монтируются снаружи (см. compose),
# чтобы правки в проекте применялись рестартом контейнера, без пересборки.
#
# HOME задан не случайно: collector.py безусловно вызывает Path.home(), а uid
# 1001 внутри образа не имеет записи в /etc/passwd — без HOME expanduser
# упадёт с RuntimeError.
ENV PYTHONPATH=/app/src \
    PYTHONUNBUFFERED=1 \
    IMGBOT_DATA_DIR=/home/tgclaude/imgbot-data \
    HOME=/tmp

WORKDIR /app
CMD ["python3", "-c", "from imgbot.daemon import main; main()"]
