- Добавлен флаг -f для принудительного удаления контейнера - docker-bot-rebuild теперь пересобирает образ (--build) - docker-bot-rebuild-full удаляет старый образ перед сборкой 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
155 lines
5.4 KiB
Makefile
155 lines
5.4 KiB
Makefile
|
||
.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 docker-bot-rebuild-full \
|
||
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 stop bot
|
||
docker-compose rm -f bot
|
||
docker-compose up -d --build bot
|
||
|
||
docker-bot-rebuild-full:
|
||
docker-compose stop bot
|
||
docker-compose rm -f bot
|
||
docker rmi -f $$(docker images -q language_bot-bot 2>/dev/null) 2>/dev/null || true
|
||
docker-compose build --no-cache bot
|
||
docker-compose up -d 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
|