GitHub Actions Workflow: - Automatic build on push to main/develop - Build on tags (v*.*.*) - Multi-platform support (linux/amd64) - Publish to ghcr.io registry - Docker layer caching - Metadata extraction for tags Build Scripts (Linux + Windows): - build-image.sh/bat: Build and publish to registry - Registry authentication check - Image testing before push - Configurable registry (default: ghcr.io) Deployment Scripts (Linux + Windows): - deploy-prod.sh/bat: Production deployment automation - Pre-deployment checks (.env.prod validation) - Automatic backup before deploy - Image pull and stack deployment - Health check verification - Rollback support
76 lines
2.4 KiB
Batchfile
76 lines
2.4 KiB
Batchfile
@echo off
|
|
REM Скрипт для деплоя в production (Windows)
|
|
|
|
echo 🚀 Production Deploy - BUH Bot
|
|
echo.
|
|
|
|
REM Проверка .env.prod
|
|
if not exist .env.prod (
|
|
echo ❌ Файл .env.prod не найден!
|
|
echo Создайте файл на основе .env.prod.example:
|
|
echo copy .env.prod.example .env.prod
|
|
echo notepad .env.prod
|
|
exit /b 1
|
|
)
|
|
|
|
echo 🔍 Проверка конфигурации...
|
|
findstr /C:"TELEGRAM_BOT_TOKEN=your_production_bot_token_here" .env.prod >nul
|
|
if %errorlevel% equ 0 (
|
|
echo ❌ TELEGRAM_BOT_TOKEN не настроен в .env.prod
|
|
exit /b 1
|
|
)
|
|
|
|
echo ✅ Конфигурация корректна
|
|
|
|
REM Создание директорий
|
|
echo 📁 Создание директорий...
|
|
if not exist data mkdir data
|
|
if not exist logs mkdir logs
|
|
if not exist temp_documents mkdir temp_documents
|
|
|
|
REM Backup
|
|
if exist data\users.json (
|
|
echo 💾 Создание backup...
|
|
set BACKUP_DIR=backups\%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%
|
|
set BACKUP_DIR=%BACKUP_DIR: =0%
|
|
mkdir %BACKUP_DIR%
|
|
copy data\*.* %BACKUP_DIR%\
|
|
echo ✅ Backup создан: %BACKUP_DIR%
|
|
)
|
|
|
|
REM Остановка существующих контейнеров
|
|
docker ps -a --format "{{.Names}}" | findstr "buh_bot" >nul
|
|
if %errorlevel% equ 0 (
|
|
echo 🛑 Остановка существующих контейнеров...
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod down
|
|
)
|
|
|
|
REM Pull latest образов
|
|
echo 📥 Получение последних образов...
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod pull
|
|
|
|
REM Запуск
|
|
echo 🚀 Запуск сервисов...
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
|
|
|
REM Проверка статуса
|
|
timeout /t 5 /nobreak >nul
|
|
echo.
|
|
echo 📊 Статус сервисов:
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod ps
|
|
|
|
echo.
|
|
echo ✅ Production деплой завершён!
|
|
echo.
|
|
echo 📝 Полезные команды:
|
|
echo Логи бота: docker-compose -f docker-compose.prod.yml logs -f buh_bot
|
|
echo Статус: docker-compose -f docker-compose.prod.yml ps
|
|
echo Остановка: docker-compose -f docker-compose.prod.yml down
|
|
echo.
|
|
echo 📊 Мониторинг:
|
|
echo Grafana: http://localhost:3000
|
|
echo Prometheus: http://localhost:9090
|
|
echo.
|
|
|
|
pause
|