108 lines
5.1 KiB
Makefile
108 lines
5.1 KiB
Makefile
# Makefile для Telegram Tinder Bot
|
||
|
||
.PHONY: help install update run migrate fix-docker clean clear-interactions
|
||
|
||
# Значения по умолчанию
|
||
DB_HOST ?= db
|
||
DB_PORT ?= 5432
|
||
DB_NAME ?= telegram_tinder_bot
|
||
DB_USERNAME ?= postgres
|
||
DB_PASSWORD ?= postgres
|
||
|
||
# Основные команды
|
||
help:
|
||
@echo "========== Telegram Tinder Bot Makefile =========="
|
||
@echo "make install - Установка зависимостей"
|
||
@echo "make update - Обновление кода из репозитория"
|
||
@echo "make run - Запуск бота в контейнере"
|
||
@echo "make migrate - Применение миграций базы данных"
|
||
@echo "make fix-docker - Исправление проблем с Docker"
|
||
@echo "make clear-interactions - Очистка матчей, свайпов и сообщений"
|
||
@echo "make clean - Очистка и остановка контейнеров"
|
||
|
||
install:
|
||
@echo "Установка зависимостей..."
|
||
@if ! command -v docker &> /dev/null; then \
|
||
echo "Установка Docker..."; \
|
||
echo "Удаление конфликтующих пакетов..."; \
|
||
sudo apt remove -y docker.io containerd runc 2>/dev/null || true; \
|
||
sudo apt update; \
|
||
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common; \
|
||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg; \
|
||
echo "deb [arch=$$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null; \
|
||
sudo apt update; \
|
||
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin; \
|
||
sudo systemctl start docker; \
|
||
sudo systemctl enable docker; \
|
||
sudo usermod -aG docker $$USER; \
|
||
echo "Docker установлен. Перелогиньтесь для применения группы docker."; \
|
||
fi
|
||
@if [ ! -f .env ]; then \
|
||
echo "Создание .env файла..."; \
|
||
cp .env.example .env 2>/dev/null || cp .env.production .env 2>/dev/null || echo "NODE_ENV=production" > .env; \
|
||
echo "Пожалуйста, отредактируйте файл .env!"; \
|
||
fi
|
||
@mkdir -p logs uploads && chmod -R 777 logs uploads
|
||
|
||
update:
|
||
@echo "Обновление кода..."
|
||
@git fetch --all
|
||
@git pull origin main || git pull origin master || echo "Не удалось обновить код"
|
||
@if [ -f package.json ]; then npm ci || npm install; fi
|
||
@echo "Пересборка контейнеров..."
|
||
@docker compose down || docker-compose down || true
|
||
@docker compose build || docker-compose build
|
||
@docker compose up -d || docker-compose up -d
|
||
@echo "Применение миграций к базе данных..."
|
||
@sleep 5
|
||
@make migrate
|
||
@echo "✅ Обновление завершено! Бот перезапущен с новой версией."
|
||
|
||
run:
|
||
@echo "Запуск бота..."
|
||
@docker-compose down || true
|
||
@make fix-docker
|
||
@docker-compose build
|
||
@docker-compose up -d
|
||
@echo "Бот запущен! Для просмотра логов: docker-compose logs -f"
|
||
|
||
migrate:
|
||
@echo "Применение миграций к базе данных..."
|
||
@if [ ! -f .env ]; then \
|
||
echo "❌ Файл .env не найден! Создайте его перед применением миграций."; \
|
||
exit 1; \
|
||
fi
|
||
@. ./.env && export $$(cat .env | grep -v '^#' | xargs) && \
|
||
echo "Подключение к БД: $$DB_HOST:$$DB_PORT/$$DB_NAME ($$DB_USERNAME)" && \
|
||
echo "Создание расширения uuid-ossp..." && \
|
||
PGPASSWORD="$$DB_PASSWORD" psql -h $$DB_HOST -p $$DB_PORT -U $$DB_USERNAME -d $$DB_NAME \
|
||
-c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" 2>/dev/null || true && \
|
||
echo "Применение consolidated.sql..." && \
|
||
PGPASSWORD="$$DB_PASSWORD" psql -h $$DB_HOST -p $$DB_PORT -U $$DB_USERNAME -d $$DB_NAME \
|
||
-f sql/consolidated.sql 2>&1 | grep -E "(ERROR|CREATE|ALTER)" || true && \
|
||
echo "Применение дополнительных миграций..." && \
|
||
for sql_file in sql/add_*.sql; do \
|
||
[ -f "$$sql_file" ] && echo " - Применение $$(basename $$sql_file)..." && \
|
||
PGPASSWORD="$$DB_PASSWORD" psql -h $$DB_HOST -p $$DB_PORT -U $$DB_USERNAME -d $$DB_NAME \
|
||
-f "$$sql_file" 2>&1 | grep -v "NOTICE" || true; \
|
||
done && \
|
||
echo "✅ Миграции применены успешно!"
|
||
|
||
fix-docker:
|
||
@echo "Исправление Docker конфигурации..."
|
||
@if [ -f Dockerfile ] && grep -q "RUN npm run build" Dockerfile; then \
|
||
sed -i 's/RUN npm run build/RUN npm run build:linux/g' Dockerfile; \
|
||
fi
|
||
@docker rm -f postgres-tinder adminer-tinder telegram-tinder-bot 2>/dev/null || true
|
||
@docker system prune -f --volumes >/dev/null 2>&1 || true
|
||
|
||
clear-interactions:
|
||
@echo "Очистка взаимодействий пользователей..."
|
||
@bash bin/clear_interactions.sh
|
||
|
||
clean:
|
||
@echo "Очистка..."
|
||
@docker-compose down || true
|
||
@rm -rf temp_migrations node_modules/.cache
|
||
@echo "Очистка завершена"
|