Makefile (20+ commands): Development Docker Commands: - make build: Build Docker image - make up: Start containers - make down: Stop containers - make logs: Show logs - make shell: Open bot shell - make ps: Show container status Production Docker Commands: - make prod-build: Build and publish to registry - make prod-up: Deploy production stack - make prod-down: Stop production - make prod-logs: Production logs - make prod-ps: Production status - make prod-restart: Restart services - make prod-pull: Update images - make prod-backup: Backup to /var/backups Development Commands: - make venv: Create virtual environment - make install: Install dependencies - make run: Run bot locally - make test: Run tests - make lint: Run linter - make clean: Clean cache and temp files - make backup: Backup data directory Utility: - make help: Show all commands with descriptions
177 lines
5.8 KiB
Makefile
177 lines
5.8 KiB
Makefile
.PHONY: help build up down restart logs shell clean test lint
|
|
|
|
# По умолчанию показываем help
|
|
help:
|
|
@echo "🤖 BUH Bot - Makefile команды:"
|
|
@echo ""
|
|
@echo "Development Docker:"
|
|
@echo " make build - Собрать Docker образ"
|
|
@echo " make up - Запустить бота (dev)"
|
|
@echo " make down - Остановить бота"
|
|
@echo " make restart - Перезапустить бота"
|
|
@echo " make logs - Показать логи (Ctrl+C для выхода)"
|
|
@echo " make shell - Войти в контейнер"
|
|
@echo " make ps - Статус контейнера"
|
|
@echo ""
|
|
@echo "Production Docker:"
|
|
@echo " make prod-build - Собрать и опубликовать образ в registry"
|
|
@echo " make prod-up - Запустить production stack"
|
|
@echo " make prod-down - Остановить production stack"
|
|
@echo " make prod-logs - Логи production"
|
|
@echo " make prod-ps - Статус production"
|
|
@echo ""
|
|
@echo "Разработка:"
|
|
@echo " make test - Запустить тесты"
|
|
@echo " make lint - Проверить код (flake8)"
|
|
@echo " make clean - Очистить временные файлы"
|
|
@echo " make backup - Создать backup данных"
|
|
@echo ""
|
|
@echo "Локальная разработка:"
|
|
@echo " make venv - Создать виртуальное окружение"
|
|
@echo " make install - Установить зависимости"
|
|
@echo " make run - Запустить бота локально"
|
|
|
|
# Docker команды
|
|
build:
|
|
@echo "🔨 Сборка Docker образа..."
|
|
docker-compose build --no-cache
|
|
|
|
up:
|
|
@echo "🚀 Запуск бота..."
|
|
@mkdir -p data logs temp_documents
|
|
docker-compose up -d
|
|
@echo "✅ Бот запущен!"
|
|
@echo "📝 Логи: make logs"
|
|
|
|
down:
|
|
@echo "🛑 Остановка бота..."
|
|
docker-compose down
|
|
@echo "✅ Бот остановлен"
|
|
|
|
restart:
|
|
@echo "🔄 Перезапуск бота..."
|
|
docker-compose restart
|
|
@echo "✅ Бот перезапущен"
|
|
|
|
logs:
|
|
@echo "📝 Логи бота (Ctrl+C для выхода):"
|
|
docker-compose logs -f
|
|
|
|
shell:
|
|
@echo "🐚 Вход в контейнер..."
|
|
docker-compose exec buh_bot bash
|
|
|
|
ps:
|
|
@echo "📊 Статус контейнера:"
|
|
docker-compose ps
|
|
|
|
# Разработка
|
|
test:
|
|
@echo "🧪 Запуск тестов..."
|
|
python -m pytest tests/ -v
|
|
|
|
lint:
|
|
@echo "🔍 Проверка кода..."
|
|
flake8 bot.py modules/ --max-line-length=79
|
|
|
|
clean:
|
|
@echo "🧹 Очистка временных файлов..."
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
find . -type f -name "*.pyo" -delete 2>/dev/null || true
|
|
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
|
rm -rf .pytest_cache 2>/dev/null || true
|
|
rm -rf htmlcov 2>/dev/null || true
|
|
rm -rf temp_documents/* 2>/dev/null || true
|
|
@echo "✅ Очистка завершена"
|
|
|
|
backup:
|
|
@echo "💾 Создание backup..."
|
|
@mkdir -p backups
|
|
tar -czf backups/backup-$$(date +%Y%m%d-%H%M%S).tar.gz data/ logs/
|
|
@echo "✅ Backup создан в backups/"
|
|
|
|
# Локальная разработка
|
|
venv:
|
|
@echo "🐍 Создание виртуального окружения..."
|
|
python3 -m venv venv
|
|
@echo "✅ Виртуальное окружение создано"
|
|
@echo "Активируйте: source venv/bin/activate"
|
|
|
|
install:
|
|
@echo "📦 Установка зависимостей..."
|
|
pip install -r requirements.txt
|
|
@echo "✅ Зависимости установлены"
|
|
|
|
run:
|
|
@echo "🚀 Запуск бота локально..."
|
|
python bot.py
|
|
|
|
# Дополнительные команды
|
|
update:
|
|
@echo "🔄 Обновление бота..."
|
|
git pull
|
|
docker-compose build
|
|
docker-compose up -d
|
|
@echo "✅ Бот обновлён и перезапущен"
|
|
|
|
stats:
|
|
@echo "📊 Статистика использования ресурсов:"
|
|
docker stats buh_bot --no-stream
|
|
|
|
check-env:
|
|
@echo "🔍 Проверка .env файла..."
|
|
@if [ ! -f .env ]; then \
|
|
echo "❌ Файл .env не найден!"; \
|
|
echo "Создайте: cp .env.example .env"; \
|
|
exit 1; \
|
|
fi
|
|
@if ! grep -q "TELEGRAM_BOT_TOKEN=.*[^_here]" .env; then \
|
|
echo "⚠️ TELEGRAM_BOT_TOKEN не настроен!"; \
|
|
else \
|
|
echo "✅ .env настроен"; \
|
|
fi
|
|
|
|
# Production команды
|
|
prod-build:
|
|
@echo "🔨 Сборка и публикация production образа..."
|
|
@chmod +x build-image.sh
|
|
./build-image.sh
|
|
|
|
prod-up:
|
|
@echo "🚀 Запуск production stack..."
|
|
@if [ ! -f .env.prod ]; then \
|
|
echo "❌ Файл .env.prod не найден!"; \
|
|
echo "Создайте: cp .env.prod.example .env.prod"; \
|
|
exit 1; \
|
|
fi
|
|
@chmod +x deploy-prod.sh
|
|
./deploy-prod.sh
|
|
|
|
prod-down:
|
|
@echo "🛑 Остановка production stack..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod down
|
|
|
|
prod-logs:
|
|
@echo "📝 Логи production (Ctrl+C для выхода):"
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod logs -f
|
|
|
|
prod-ps:
|
|
@echo "📊 Статус production:"
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod ps
|
|
|
|
prod-restart:
|
|
@echo "🔄 Перезапуск production..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod restart
|
|
|
|
prod-pull:
|
|
@echo "📥 Обновление образов..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod pull
|
|
|
|
prod-backup:
|
|
@echo "💾 Создание production backup..."
|
|
@mkdir -p /var/backups/buh_bot
|
|
sudo tar -czf /var/backups/buh_bot/backup-$$(date +%Y%m%d-%H%M%S).tar.gz \
|
|
/var/lib/buh_bot/data /var/log/buh_bot
|
|
@echo "✅ Backup создан в /var/backups/buh_bot/"
|