fix(deploy): починить DATABASE_URL для локального контейнерного стенда

Корневой .env указывает DATABASE_URL на localhost (нужен только для
запуска backend на хосте вне контейнера), а compose подставлял эту
строку внутрь контейнеров backend/worker/worker-transcriber как есть —
localhost внутри контейнера это он сам, ConnectionRefused при любом
docker compose up без обходной переменной окружения (грабля с 04.08).

DATABASE_URL для контейнеров теперь всегда собирается в compose из
POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB с хостом postgres — так же,
как уже сделано для REDIS_URL. Прода не касается: install.sh (строка 380)
и так пересобирает DATABASE_URL при установке с хостом postgres.

Проверено на локальном стенде: docker compose --profile media up -d без
обходной переменной, backend/worker подключились к БД без ConnectionRefused.
This commit is contained in:
2026-08-10 16:09:38 +03:00
parent 6db142d45a
commit 9abe5b5102

View File

@@ -69,7 +69,12 @@ services:
env_file:
- ../.env
environment:
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://vidconf:vidconf@postgres:5432/vidconf}
# Собран из POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB с жёстким хостом
# `postgres` (сессия 37) — так же, как REDIS_URL ниже, а не читается из
# .env.DATABASE_URL напрямую: тот в корневом .env указывает на `localhost`
# (для запуска backend на хосте вне контейнера, см. CONTEXT §2.1.0), а
# `localhost` внутри контейнера — это сам контейнер, не соседний postgres.
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-vidconf}:${POSTGRES_PASSWORD:-vidconf}@postgres:5432/${POSTGRES_DB:-vidconf}
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD не задан в .env}@redis:6379/0
PLUGINS_CONFIG_PATH: ${PLUGINS_CONFIG_PATH:-config/plugins.yaml}
LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:?LIVEKIT_API_KEY не задан в .env}
@@ -89,7 +94,7 @@ services:
MEDIA_ROOT: ${MEDIA_ROOT:-/app/media}
# Версия инстанса (релиз v0.0.1) — install.sh копирует значение
# из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health.
VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.36}
VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.37}
# Число процессов uvicorn (см. backend/Dockerfile). Дефолт 2 рассчитан
# на 4-ядерный сервер, где ядра делятся с LiveKit. Поднимая значение,
# проверьте бюджет соединений с БД: каждый воркер держит свой пул
@@ -143,7 +148,7 @@ services:
env_file:
- ../.env
environment:
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://vidconf:vidconf@postgres:5432/vidconf}
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-vidconf}:${POSTGRES_PASSWORD:-vidconf}@postgres:5432/${POSTGRES_DB:-vidconf}
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD не задан в .env}@redis:6379/0
PLUGINS_CONFIG_PATH: ${PLUGINS_CONFIG_PATH:-config/plugins.yaml}
PYTHONPATH: /app
@@ -240,7 +245,7 @@ services:
env_file:
- ../.env
environment:
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://vidconf:vidconf@postgres:5432/vidconf}
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-vidconf}:${POSTGRES_PASSWORD:-vidconf}@postgres:5432/${POSTGRES_DB:-vidconf}
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD не задан в .env}@redis:6379/0
PLUGINS_CONFIG_PATH: ${PLUGINS_CONFIG_PATH:-config/plugins.yaml}
RECORDINGS_DIR: ${RECORDINGS_DIR:-/recordings}
@@ -296,7 +301,7 @@ services:
env_file:
- ../.env
environment:
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://vidconf:vidconf@postgres:5432/vidconf}
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-vidconf}:${POSTGRES_PASSWORD:-vidconf}@postgres:5432/${POSTGRES_DB:-vidconf}
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD не задан в .env}@redis:6379/0
PLUGINS_CONFIG_PATH: ${PLUGINS_CONFIG_PATH:-config/plugins.yaml}
RECORDINGS_DIR: ${RECORDINGS_DIR:-/recordings}