#!/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 "🎉 Бот запущен и готов к работе!"