# Makefile для Telegram Tinder Bot .PHONY: help install update run migrate fix-docker clean # Значения по умолчанию 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 clean - Очистка и остановка контейнеров" install: @echo "Установка зависимостей..." @if ! command -v docker &> /dev/null || ! command -v docker-compose &> /dev/null; then \ echo "Установка Docker..."; \ sudo apt update && sudo apt install -y docker.io docker-compose; \ 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 run: @echo "Запуск бота..." @docker-compose down || true @make fix-docker @docker-compose build @docker-compose up -d @echo "Бот запущен! Для просмотра логов: docker-compose logs -f" migrate: @echo "Применение миграций..." @if [ -d migrations ]; then \ mkdir -p temp_migrations; \ find migrations -name "*.js" -exec cp {} temp_migrations/ \; 2>/dev/null || true; \ DATABASE_URL=postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME} \ npx node-pg-migrate up --migrations-dir=migrations || true; \ fi @if [ -d sql ]; then \ for sql_file in sql/*.sql; do \ [ -f "$${sql_file}" ] && docker-compose exec -T db psql -U ${DB_USERNAME} -d ${DB_NAME} -f "/app/$${sql_file}" || true; \ done; \ fi 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 clean: @echo "Очистка..." @docker-compose down || true @rm -rf temp_migrations node_modules/.cache @echo "Очистка завершена"