3.3 KiB
3.3 KiB
Развёртывание
Клонируем репозиторий и поднимаем контур Compose-ом. Контуры test и prod
разделяются именем проекта (-p) и файлом окружения (--env-file) — у каждого
свои БД и volume'ы, на одной машине не пересекаются.
1. Клонировать
git clone ssh://git@<gitea-host>:2222/mpakobecex/DispelEvilBot.git
cd DispelEvilBot
2. Подготовить окружение
cp env/test.env.example env/test.env
# заполнить: BOT_TOKEN, DB_PASSWORD, CHAT_ID (основной чат), ALERT_CHAT_ID (опц.), ADMIN_IDS (опц.)
3. Логин в registry (если пакет приватный)
docker login git.mpakosrv.ru -u mpakobecex -p <ТОКЕН с read:package>
Если пакет сделать публичным — логин не нужен.
4. Запуск
# тестовый контур
docker compose -p test --env-file env/test.env -f docker-compose.prod.yml up -d
# прод (когда понадобится)
cp env/prod.env.example env/prod.env
docker compose -p prod --env-file env/prod.env -f docker-compose.prod.yml up -d
Логи:
docker compose -p test --env-file env/test.env -f docker-compose.prod.yml logs -f
Что происходит при старте
postgresподнимается и проходит healthcheck;migrate(Flyway) накатывает миграции изsql/— для пустой БД с нуля;botстартует (Запуск DispelEvilBot v<версия> (APP_ENV=...)).
Обновление и откат
# обновление: поменять IMAGE_TAG в env/<контур>.env, затем
docker compose -p <контур> --env-file env/<контур>.env -f docker-compose.prod.yml pull
docker compose -p <контур> --env-file env/<контур>.env -f docker-compose.prod.yml up -d
Откат — вернуть предыдущий IMAGE_TAG (например, commit-sha) и повторить.
Контуры
| Контур | env-файл | БД | APP_ENV | Бот |
|---|---|---|---|---|
| test | env/test.env |
dispel_evil_test |
dev |
тестовый |
| prod | env/prod.env |
dispel_evil |
prod |
боевой |
Переменные окружения
См. env/prod.env.example / env/test.env.example.
Перенос данных на прод (позже, короткое окно простоя)
- Остановить старого бота.
pg_dump -Fc -f dump.pgc <старая_бд>.- Поднять прод-контур (миграции создадут чистую схему).
- Загрузить данные:
pg_restore --data-only --disable-triggers -d dispel_evil dump.pgc. - Сверить: число пользователей,
SUM(money.amount), число сообщений. - Переключить бота, проверить команды.
Бэкап старой БД обязателен. Дубли в tg_users/de_users/unsubscribe при загрузке
нужно устранить до создания PK (миграция V12 делает дедуп, но при загрузке поверх
миграций дедуп — вручную).