chore(tradein): drop uvicorn --reload in prod (WatchFiles overhead)
Dockerfile CMD carries `--reload` for dev hot-reload (app/ bind-mounted in docker-compose.yml). In prod the same image ran with --reload too — prod logs showed "Started reloader process [1] using WatchFiles" — wasting a file-watcher and risking a reload mid-request on an immutable image. Add a prod-only `command:` override running uvicorn without --reload. Keep it a single worker (no --workers): the in-app scheduler (app.services.scheduler, tick=60s) lives in the backend process, so multiple workers would duplicate scheduled jobs (cian/rosreestr would fire N times). Dev is untouched (no command override there → still inherits the Dockerfile --reload).
This commit is contained in:
parent
40002cfcd2
commit
a4603d64c8
1 changed files with 6 additions and 0 deletions
|
|
@ -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".
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue