mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 17:14:59 +03:00
Переход на запуск без .env (41a4b0d) не был доведён: в дереве остались файл
`env.example`, чтение instance .env во всём deploy/cli и CI, который этот .env
сам же и создавал из `env.example`. Из-за остатков ломались две вещи.
`chatballs deploy` не работал на установке без .env: _normalize_schema_ownership
брал POSTGRES_USER и POSTGRES_DB из файла и падал с «POSTGRES_USER not set»,
хотя установка исправна. Теперь берёт те же значения по умолчанию, что compose.
`chatballs doctor` выдавал пять ложных ошибок подряд: искал в .env домены,
ACME-почту, POSTGRES_PASSWORD и CHATBALLS_SECRET_KEY. Первое задаёт владелец
в «Настройках», второе генерирует в том с секретами первый старт стека —
снаружи, с хоста, этого не видно, и проверки убраны.
Убрано: env.example (из репозитория, release bundle и README); instance_env_file()
и все его чтения в common/compose/deploy/doctor/status; --env-file instance .env
из вызова compose — остаётся только release.env с digest-пинами образов от CI;
создание .env в gateway:validate. Профиль calls и его адреса читаются из
переменных окружения — оттуда же, откуда их берёт сам compose.
Тесты CLI переведены с фиктивного .env на переменные окружения; три проверки
удалённого поведения doctor убраны. Девять оставшихся проходят вообще без .env
— это и есть проверка, что установка теперь обслуживается. Заодно у
test_custocrm_cli.py выправлены окончания строк: в файле были одиночные CR
внутри кода, отчего diff по нему больше содержательной правки.
Проверено: pytest tests/cli — 9 passed; docker compose config валиден с пустым
каталогом инстанса; bash -n чист по всем скриптам CLI.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
977 B
Bash
31 lines
977 B
Bash
#!/usr/bin/env bash
|
|
# compose.sh — canonical Docker Compose invocation for a release + instance pair.
|
|
# Release files remain immutable; runtime data stays in INSTANCE_DIR.
|
|
|
|
run_compose() {
|
|
local inst rel
|
|
inst="$(instance_dir)"
|
|
rel="$(release_dir)"
|
|
# Переменных окружения продукт не требует: compose поднимается со значениями
|
|
# по умолчанию, всё остальное человек задаёт в интерфейсе. Единственный
|
|
# env-файл — release.env: в нём digest-пины образов, которые ставит CI.
|
|
(
|
|
cd "$inst" || exit 1
|
|
docker compose \
|
|
--project-directory "$inst" \
|
|
--env-file "$rel/release.env" \
|
|
-f "$rel/compose.yaml" \
|
|
"$@"
|
|
)
|
|
}
|
|
|
|
compose_config_validate() {
|
|
run_compose config -q
|
|
}
|
|
|
|
profile_enabled() {
|
|
local p="$1" profiles
|
|
profiles="${COMPOSE_PROFILES:-}"
|
|
[[ ",$profiles," == *",$p,"* ]]
|
|
}
|