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:
101
deploy.sh
Executable file
101
deploy.sh
Executable 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 "🎉 Бот запущен и готов к работе!"
|
||||
Reference in New Issue
Block a user