76 lines
2.9 KiB
Makefile
76 lines
2.9 KiB
Makefile
# 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 "Очистка завершена"
|