feat: добавлена Docker инфраструктура для продакшн-развертывания

Добавлено:
- Обновлен docker-compose.yml для production (упрощен, удален Redis/pgAdmin)
- .env.prod.example - шаблон конфигурации для продакшн
- deploy.sh - скрипт автоматического развертывания
- DOCKER_DEPLOY.md - полная документация по развертыванию

Makefile команды:
- docker-setup - первоначальная настройка
- docker-build/up/down - управление контейнерами
- docker-logs/logs-db - просмотр логов
- docker-db-migrate/backup/restore - работа с БД
- docker-deploy - полное автоматическое развертывание

Использование:
1. make docker-setup (создаст .env.prod)
2. Отредактировать .env.prod
3. make docker-deploy (автоматическое развертывание)
Или: ./deploy.sh
This commit is contained in:
2025-11-17 09:42:23 +09:00
parent 29a6ac2bd2
commit 71b91bf9bb
7 changed files with 672 additions and 107 deletions

101
deploy.sh Executable file
View File

@@ -0,0 +1,101 @@
#!/bin/bash
# Скрипт быстрого развертывания бота в продакшн через Docker
set -e # Остановка при ошибке
echo "🚀 Быстрое развертывание lottery bot в продакшн"
echo "================================================"
echo ""
# Проверка наличия Docker
if ! command -v docker &> /dev/null; then
echo "❌ Docker не установлен!"
echo "Установите Docker: https://docs.docker.com/get-docker/"
exit 1
fi
# Проверка наличия Docker Compose
if ! command -v docker-compose &> /dev/null; then
echo "❌ Docker Compose не установлен!"
echo "Установите Docker Compose: https://docs.docker.com/compose/install/"
exit 1
fi
echo "✅ Docker и Docker Compose установлены"
echo ""
# Проверка .env.prod
if [ ! -f .env.prod ]; then
echo "⚠️ Файл .env.prod не найден"
if [ -f .env.prod.example ]; then
echo "📄 Создаю .env.prod из примера..."
cp .env.prod.example .env.prod
echo ""
echo "⚠️ ВНИМАНИЕ!"
echo "Отредактируйте файл .env.prod и укажите:"
echo " - BOT_TOKEN (токен от @BotFather)"
echo " - POSTGRES_PASSWORD (надежный пароль для БД)"
echo " - DATABASE_URL (обновите пароль в строке подключения)"
echo " - ADMIN_IDS (ваш Telegram ID)"
echo ""
read -p "Нажмите Enter после редактирования .env.prod..."
else
echo "❌ Файл .env.prod.example не найден!"
exit 1
fi
fi
echo "✅ Конфигурация найдена"
echo ""
# Создание необходимых директорий
echo "📁 Создание директорий..."
mkdir -p logs backups data
echo "✅ Директории созданы"
echo ""
# Сборка образа
echo "🔨 Сборка Docker образа..."
docker-compose build --no-cache
echo "✅ Образ собран"
echo ""
# Запуск контейнеров
echo "🚀 Запуск контейнеров..."
docker-compose --env-file .env.prod up -d
echo "✅ Контейнеры запущены"
echo ""
# Ожидание запуска БД
echo "⏳ Ожидание запуска базы данных..."
sleep 10
# Применение миграций
echo "⬆️ Применение миграций..."
docker-compose exec -T bot alembic upgrade head || {
echo "⚠️ Миграции не применены (возможно БД уже актуальна)"
}
echo ""
# Статус
echo "📊 Статус контейнеров:"
docker-compose ps
echo ""
# Проверка логов
echo "📋 Последние логи бота:"
docker-compose logs --tail=20 bot
echo ""
echo "✅ Развертывание завершено!"
echo ""
echo "📝 Полезные команды:"
echo " make docker-logs - Просмотр логов"
echo " make docker-status - Статус контейнеров"
echo " make docker-restart - Перезапуск"
echo " make docker-down - Остановка"
echo " make docker-db-backup - Бэкап БД"
echo ""
echo "🎉 Бот запущен и готов к работе!"