diff --git a/tradein-mvp/docker-compose.prod.yml b/tradein-mvp/docker-compose.prod.yml index f019e401..5a6e1905 100644 --- a/tradein-mvp/docker-compose.prod.yml +++ b/tradein-mvp/docker-compose.prod.yml @@ -36,6 +36,12 @@ services: backend: image: ghcr.io/lekss361/gendesign-tradein-backend:${IMAGE_TAG:-latest} container_name: tradein-backend + # Prod: uvicorn БЕЗ --reload (Dockerfile CMD несёт --reload только для dev hot-reload, + # где app/ bind-mount'ится). В prod --reload = лишний WatchFiles-наблюдатель + риск + # reload в середине запроса. Single worker ОБЯЗАТЕЛЕН: in-app планировщик + # (app.services.scheduler, tick=60s) живёт в процессе backend — несколько uvicorn + # воркеров = дублирование scheduled-джоб (cian/rosreestr запустятся N раз). Без --workers. + command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] # .env.runtime пишется вручную на VPS (см. DEPLOY.md / scripts/README.md). # Контейнер читает YANDEX_GEOCODER_API_KEY, COOKIE_ENCRYPTION_KEY и пр. из # этого файла — без него backfill scripts падают с "key required".