2025-12-04 19:43:21 +03:00
|
|
|
|
|
2025-12-04 19:42:44 +03:00
|
|
|
|
.PHONY: help venv install run clean \
|
|
|
|
|
|
docker-up docker-down docker-logs docker-rebuild docker-restart \
|
2025-12-08 16:43:08 +03:00
|
|
|
|
docker-bot-restart docker-bot-rebuild docker-bot-build docker-bot-rebuild-full \
|
2025-12-04 19:43:21 +03:00
|
|
|
|
migrate migrate-down migrate-current migrate-revision \
|
2025-12-08 15:16:24 +03:00
|
|
|
|
local-migrate local-migrate-down local-migrate-current \
|
2025-12-04 19:42:44 +03:00
|
|
|
|
docker-db docker-db-stop
|
2025-12-04 11:23:48 +03:00
|
|
|
|
|
|
|
|
|
|
help:
|
|
|
|
|
|
@echo "Доступные команды:"
|
2025-12-04 11:55:51 +03:00
|
|
|
|
@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 - Пересобрать контейнеры"
|
2025-12-04 19:42:44 +03:00
|
|
|
|
@echo " make docker-restart - Перезапустить все контейнеры"
|
|
|
|
|
|
@echo " make docker-bot-restart - Перезапустить только бот"
|
|
|
|
|
|
@echo " make docker-bot-build - Собрать образ бота"
|
|
|
|
|
|
@echo " make docker-bot-rebuild - Пересобрать и поднять только бот"
|
2025-12-04 11:55:51 +03:00
|
|
|
|
@echo ""
|
2025-12-08 15:16:24 +03:00
|
|
|
|
@echo "Миграции Alembic (Docker):"
|
2025-12-04 19:43:21 +03:00
|
|
|
|
@echo " make migrate - Применить все миграции (upgrade head)"
|
|
|
|
|
|
@echo " make migrate-down - Откатить одну миграцию (downgrade -1)"
|
|
|
|
|
|
@echo " make migrate-current - Показать текущую ревизию"
|
|
|
|
|
|
@echo " make migrate-revision m=\"msg\" - Создать пустую ревизию с сообщением"
|
|
|
|
|
|
@echo ""
|
2025-12-08 15:16:24 +03:00
|
|
|
|
@echo "Миграции Alembic (локально):"
|
|
|
|
|
|
@echo " make local-migrate - Применить все миграции локально"
|
|
|
|
|
|
@echo " make local-migrate-down - Откатить одну миграцию локально"
|
|
|
|
|
|
@echo " make local-migrate-current - Показать текущую ревизию локально"
|
|
|
|
|
|
@echo ""
|
2025-12-04 11:55:51 +03:00
|
|
|
|
@echo "База данных:"
|
|
|
|
|
|
@echo " make docker-db - Запустить только БД (для локальной разработки)"
|
|
|
|
|
|
@echo " make docker-db-stop - Остановить БД"
|
2025-12-04 11:23:48 +03:00
|
|
|
|
|
|
|
|
|
|
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
|
2025-12-04 11:55:51 +03:00
|
|
|
|
|
2025-12-04 19:42:44 +03:00
|
|
|
|
docker-restart:
|
|
|
|
|
|
docker-compose restart
|
|
|
|
|
|
|
|
|
|
|
|
docker-bot-restart:
|
|
|
|
|
|
docker-compose restart bot
|
|
|
|
|
|
|
|
|
|
|
|
docker-bot-build:
|
|
|
|
|
|
docker-compose build bot
|
|
|
|
|
|
|
|
|
|
|
|
docker-bot-rebuild:
|
2025-12-08 15:18:19 +03:00
|
|
|
|
docker-compose stop bot
|
2025-12-08 16:43:08 +03:00
|
|
|
|
docker-compose rm bot
|
|
|
|
|
|
docker-compose up -d bot
|
|
|
|
|
|
|
|
|
|
|
|
docker-bot-rebuild-full:
|
|
|
|
|
|
docker-compose stop bot
|
|
|
|
|
|
docker-compose rm -rf bot
|
2025-12-08 15:18:19 +03:00
|
|
|
|
docker-compose build --no-cache bot
|
|
|
|
|
|
docker-compose up -d bot
|
2025-12-04 19:42:44 +03:00
|
|
|
|
|
2025-12-04 19:43:21 +03:00
|
|
|
|
# ------- 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)"
|
|
|
|
|
|
|
2025-12-08 15:16:24 +03:00
|
|
|
|
# ------- Локальные миграции Alembic (без Docker) -------
|
|
|
|
|
|
local-migrate:
|
|
|
|
|
|
.venv/bin/alembic upgrade head
|
|
|
|
|
|
|
|
|
|
|
|
local-migrate-down:
|
|
|
|
|
|
.venv/bin/alembic downgrade -1
|
|
|
|
|
|
|
|
|
|
|
|
local-migrate-current:
|
|
|
|
|
|
.venv/bin/alembic current
|
|
|
|
|
|
|
2025-12-04 11:55:51 +03:00
|
|
|
|
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
|