Files
tg_bot_language/Makefile

146 lines
5.1 KiB
Makefile
Raw Normal View History

.PHONY: help venv install run clean \
docker-up docker-down docker-logs docker-rebuild docker-restart \
docker-bot-restart docker-bot-rebuild docker-bot-build \
migrate migrate-down migrate-current migrate-revision \
local-migrate local-migrate-down local-migrate-current \
docker-db docker-db-stop
help:
@echo "Доступные команды:"
@echo " make venv - Создать виртуальное окружение"
@echo " make install - Установить зависимости"
@echo " make run - Запустить бота локально"
@echo " make clean - Удалить venv и кэш"
@echo ""
@echo "Docker команды:"
@echo " make docker-up - Запустить всё (бот + БД)"
@echo " make docker-down - Остановить все контейнеры"
@echo " make docker-logs - Показать логи Docker"
@echo " make docker-rebuild - Пересобрать контейнеры"
@echo " make docker-restart - Перезапустить все контейнеры"
@echo " make docker-bot-restart - Перезапустить только бот"
@echo " make docker-bot-build - Собрать образ бота"
@echo " make docker-bot-rebuild - Пересобрать и поднять только бот"
@echo ""
@echo "Миграции Alembic (Docker):"
@echo " make migrate - Применить все миграции (upgrade head)"
@echo " make migrate-down - Откатить одну миграцию (downgrade -1)"
@echo " make migrate-current - Показать текущую ревизию"
@echo " make migrate-revision m=\"msg\" - Создать пустую ревизию с сообщением"
@echo ""
@echo "Миграции Alembic (локально):"
@echo " make local-migrate - Применить все миграции локально"
@echo " make local-migrate-down - Откатить одну миграцию локально"
@echo " make local-migrate-current - Показать текущую ревизию локально"
@echo ""
@echo "База данных:"
@echo " make docker-db - Запустить только БД (для локальной разработки)"
@echo " make docker-db-stop - Остановить БД"
venv:
python3 -m venv .venv
@echo "Виртуальное окружение создано!"
@echo "Активируйте его: source .venv/bin/activate"
install: venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt
@echo "Зависимости установлены!"
run:
@if [ ! -f .env ]; then \
echo "Ошибка: файл .env не найден!"; \
echo "Создайте его: cp .env.example .env"; \
exit 1; \
fi
.venv/bin/python main.py
clean:
rm -rf .venv
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
@echo "Очистка завершена!"
docker-up:
@if [ ! -f .env ]; then \
echo "Ошибка: файл .env не найден!"; \
echo "Создайте его: cp .env.example .env"; \
exit 1; \
fi
docker-compose up -d
docker-down:
docker-compose down
docker-logs:
docker-compose logs -f bot
docker-rebuild:
docker-compose up -d --build
docker-restart:
docker-compose restart
docker-bot-restart:
docker-compose restart bot
docker-bot-build:
docker-compose build bot
docker-bot-rebuild:
docker-compose up -d --build bot
# ------- Alembic migrations (в контейнере бота) -------
migrate:
docker-compose exec bot alembic upgrade head
migrate-down:
docker-compose exec bot alembic downgrade -1
migrate-current:
docker-compose exec bot alembic current
migrate-revision:
@if [ -z "$(m)" ]; then \
echo "Укажите сообщение: make migrate-revision m=\"message\""; \
exit 1; \
fi
docker-compose exec bot alembic revision -m "$(m)"
# ------- Локальные миграции Alembic (без Docker) -------
local-migrate:
.venv/bin/alembic upgrade head
local-migrate-down:
.venv/bin/alembic downgrade -1
local-migrate-current:
.venv/bin/alembic current
docker-db:
@echo "🐘 Запуск PostgreSQL для локальной разработки..."
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "⚠️ Создан .env файл из .env.example"; \
fi
docker-compose -f docker-compose.dev.yml up -d
@echo "✅ База данных запущена на localhost:15433"
@echo ""
@echo "Параметры подключения:"
@echo " Host: localhost"
@echo " Port: 15433"
@echo " User: botuser"
@echo " Password: botpassword"
@echo " Database: language_bot"
@echo ""
@echo "DATABASE_URL для .env:"
@echo " DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot"
@echo ""
@echo "Подключиться: docker-compose -f docker-compose.dev.yml exec db psql -U botuser -d language_bot"
docker-db-stop:
@echo "Остановка базы данных..."
docker-compose -f docker-compose.dev.yml stop
docker-compose -f docker-compose.dev.yml down