148 lines
5.4 KiB
Makefile
148 lines
5.4 KiB
Makefile
# Makefile для SalvageDB Telegram Bot
|
|
.PHONY: help build up down restart logs shell clean test health
|
|
|
|
# Переменные
|
|
COMPOSE_FILE = docker-compose.yml
|
|
SERVICE_NAME = salvagedb-bot
|
|
CONTAINER_NAME = salvagedb-telegram-bot
|
|
|
|
# Помощь
|
|
help: ## Показать доступные команды
|
|
@echo "SalvageDB Telegram Bot - Docker Commands"
|
|
@echo "========================================"
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
|
|
# Основные команды
|
|
build: ## Собрать Docker образ
|
|
@echo "🔨 Building Docker image..."
|
|
docker-compose build --no-cache
|
|
|
|
up: ## Запустить контейнер
|
|
@echo "🚀 Starting container..."
|
|
docker-compose up -d
|
|
|
|
down: ## Остановить контейнер
|
|
@echo "🛑 Stopping container..."
|
|
docker-compose down
|
|
|
|
restart: ## Перезапустить контейнер
|
|
@echo "🔄 Restarting container..."
|
|
docker-compose restart
|
|
|
|
# Логи и мониторинг
|
|
logs: ## Показать логи в реальном времени
|
|
@echo "📋 Following logs..."
|
|
docker-compose logs -f $(SERVICE_NAME)
|
|
|
|
logs-tail: ## Показать последние 100 строк логов
|
|
@echo "📋 Last 100 log lines..."
|
|
docker-compose logs --tail=100 $(SERVICE_NAME)
|
|
|
|
health: ## Проверить здоровье контейнера
|
|
@echo "🏥 Checking container health..."
|
|
docker inspect --format='{{.State.Health.Status}}' $(CONTAINER_NAME) || echo "Health check not available"
|
|
|
|
status: ## Показать статус контейнера
|
|
@echo "📊 Container status:"
|
|
docker-compose ps
|
|
|
|
stats: ## Показать статистику ресурсов
|
|
@echo "📈 Resource usage:"
|
|
docker stats $(CONTAINER_NAME) --no-stream
|
|
|
|
# Разработка
|
|
shell: ## Подключиться к контейнеру
|
|
@echo "🐚 Opening shell in container..."
|
|
docker-compose exec $(SERVICE_NAME) bash
|
|
|
|
shell-root: ## Подключиться как root
|
|
@echo "🔑 Opening root shell in container..."
|
|
docker-compose exec --user root $(SERVICE_NAME) bash
|
|
|
|
# Тестирование
|
|
test-env: ## Проверить переменные окружения
|
|
@echo "🔍 Checking environment variables..."
|
|
docker-compose exec $(SERVICE_NAME) python -c "import os; [print(f'{k}={v[:20]}{"..." if len(v) > 20 else ""}') for k, v in sorted(os.environ.items()) if any(x in k.upper() for x in ['BOT', 'DB', 'PRICE', 'ADMIN', 'DEBUG'])]"
|
|
|
|
test-db: ## Тестировать подключение к БД
|
|
@echo "🗄️ Testing database connection..."
|
|
docker-compose exec $(SERVICE_NAME) python -c "import oracledb, os; conn = oracledb.connect(user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), dsn=os.getenv('DB_DSN')); print('✅ Database connection successful!'); conn.close()"
|
|
|
|
test-bot: ## Проверить импорты бота
|
|
@echo "🤖 Testing bot imports..."
|
|
docker-compose exec $(SERVICE_NAME) python -c "import aiogram, oracledb, asyncio, logging; print('✅ All imports successful!')"
|
|
|
|
test-all: test-env test-db test-bot ## Запустить все тесты
|
|
|
|
# Обслуживание
|
|
clean: ## Удалить контейнеры и volumes
|
|
@echo "🧹 Cleaning up..."
|
|
docker-compose down -v
|
|
docker system prune -f
|
|
|
|
clean-images: ## Удалить неиспользуемые образы
|
|
@echo "🗑️ Removing unused images..."
|
|
docker image prune -f
|
|
|
|
clean-all: clean clean-images ## Полная очистка
|
|
|
|
# Бэкап и восстановление
|
|
backup-logs: ## Создать архив логов
|
|
@echo "💾 Creating logs backup..."
|
|
tar -czf logs_backup_$(shell date +%Y%m%d_%H%M%S).tar.gz logs/
|
|
|
|
backup-env: ## Создать бэкап переменных окружения
|
|
@echo "🔐 Creating environment backup..."
|
|
cp .env .env.backup.$(shell date +%Y%m%d_%H%M%S)
|
|
|
|
# Деплой
|
|
deploy: build up ## Полный деплой (сборка + запуск)
|
|
@echo "🚀 Deployment complete!"
|
|
@make health
|
|
|
|
redeploy: down build up ## Переделой (остановка + сборка + запуск)
|
|
@echo "🔄 Redeployment complete!"
|
|
@make health
|
|
|
|
# Мониторинг
|
|
monitor: ## Мониторинг в реальном времени
|
|
@echo "📊 Starting monitoring (Ctrl+C to stop)..."
|
|
@while true; do \
|
|
clear; \
|
|
echo "=== SalvageDB Bot Monitoring ==="; \
|
|
echo "Time: $$(date)"; \
|
|
echo ""; \
|
|
echo "Container Status:"; \
|
|
docker-compose ps; \
|
|
echo ""; \
|
|
echo "Resource Usage:"; \
|
|
docker stats $(CONTAINER_NAME) --no-stream 2>/dev/null || echo "Container not running"; \
|
|
echo ""; \
|
|
echo "Last 5 log lines:"; \
|
|
docker-compose logs --tail=5 $(SERVICE_NAME) 2>/dev/null || echo "No logs available"; \
|
|
sleep 5; \
|
|
done
|
|
|
|
# Обновление
|
|
update: ## Обновить код и перезапустить
|
|
@echo "📥 Updating application..."
|
|
git pull
|
|
@make redeploy
|
|
|
|
# Конфигурация
|
|
setup: ## Первоначальная настройка
|
|
@echo "⚙️ Initial setup..."
|
|
@if [ ! -f .env ]; then \
|
|
echo "📝 Creating .env file from template..."; \
|
|
cp env.example .env; \
|
|
echo "✅ Please edit .env file with your configuration"; \
|
|
else \
|
|
echo "✅ .env file already exists"; \
|
|
fi
|
|
@echo "📁 Creating directories..."
|
|
mkdir -p logs images data
|
|
chmod 755 logs images data
|
|
@echo "✅ Setup complete! Edit .env file and run 'make deploy'"
|
|
|
|
# По умолчанию
|
|
.DEFAULT_GOAL := help
|