This commit is contained in:
69
Makefile
69
Makefile
@@ -1,6 +1,9 @@
|
|||||||
# CatLink Development and Deployment Makefile
|
# CatLink Development and Deployment Makefile
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
|
# Docker Compose command detection
|
||||||
|
DOCKER_COMPOSE := $(shell which docker-compose 2>/dev/null || echo "docker compose")
|
||||||
|
|
||||||
.PHONY: help install update dev build deploy ssl clean logs test restart shell backup restore
|
.PHONY: help install update dev build deploy ssl clean logs test restart shell backup restore
|
||||||
|
|
||||||
# Default target
|
# Default target
|
||||||
@@ -23,21 +26,21 @@ install: ## Установка и первый запуск
|
|||||||
|
|
||||||
dev: ## Запуск в режиме разработки
|
dev: ## Запуск в режиме разработки
|
||||||
@echo "🔧 Запуск в режиме разработки..."
|
@echo "🔧 Запуск в режиме разработки..."
|
||||||
@docker-compose up
|
@$(DOCKER_COMPOSE) up
|
||||||
|
|
||||||
dev-bg: ## Запуск в фоне для разработки
|
dev-bg: ## Запуск в фоне для разработки
|
||||||
@echo "🔧 Запуск в фоне..."
|
@echo "🔧 Запуск в фоне..."
|
||||||
@docker-compose up -d
|
@$(DOCKER_COMPOSE) up -d
|
||||||
@echo "✅ Запущено в фоне"
|
@echo "✅ Запущено в фоне"
|
||||||
@echo "📱 Frontend: http://localhost:3000"
|
@echo "📱 Frontend: http://localhost:3000"
|
||||||
@echo "🔧 Backend: http://localhost:8000"
|
@echo "🔧 Backend: http://localhost:8000"
|
||||||
|
|
||||||
up: ## Запуск с пересборкой (legacy)
|
up: ## Запуск с пересборкой (legacy)
|
||||||
@docker-compose up -d --build
|
@$(DOCKER_COMPOSE) up -d --build
|
||||||
|
|
||||||
down: ## Остановка всех сервисов
|
down: ## Остановка всех сервисов
|
||||||
@echo "⏹️ Остановка сервисов..."
|
@echo "⏹️ Остановка сервисов..."
|
||||||
@docker-compose down
|
@$(DOCKER_COMPOSE) down
|
||||||
@echo "✅ Сервисы остановлены"
|
@echo "✅ Сервисы остановлены"
|
||||||
|
|
||||||
stop: ## Остановка всех сервисов (alias)
|
stop: ## Остановка всех сервисов (alias)
|
||||||
@@ -45,37 +48,37 @@ stop: ## Остановка всех сервисов (alias)
|
|||||||
|
|
||||||
restart: ## Перезапуск сервисов
|
restart: ## Перезапуск сервисов
|
||||||
@echo "🔄 Перезапуск сервисов..."
|
@echo "🔄 Перезапуск сервисов..."
|
||||||
@docker-compose down
|
@$(DOCKER_COMPOSE) down
|
||||||
@docker-compose up -d
|
@$(DOCKER_COMPOSE) up -d
|
||||||
@echo "✅ Сервисы перезапущены"
|
@echo "✅ Сервисы перезапущены"
|
||||||
|
|
||||||
# === Build Commands ===
|
# === Build Commands ===
|
||||||
|
|
||||||
build: ## Сборка без кэша
|
build: ## Сборка без кэша
|
||||||
@echo "🏗️ Сборка контейнеров..."
|
@echo "🏗️ Сборка контейнеров..."
|
||||||
@docker-compose build --no-cache
|
@$(DOCKER_COMPOSE) build --no-cache
|
||||||
@echo "✅ Сборка завершена"
|
@echo "✅ Сборка завершена"
|
||||||
|
|
||||||
build-prod: ## Сборка для продакшена
|
build-prod: ## Сборка для продакшена
|
||||||
@echo "🏗️ Сборка для продакшена..."
|
@echo "🏗️ Сборка для продакшена..."
|
||||||
@docker-compose -f docker-compose.yml -f docker-compose.prod.yml build --no-cache
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml build --no-cache
|
||||||
@echo "✅ Продакшен сборка готова"
|
@echo "✅ Продакшен сборка готова"
|
||||||
|
|
||||||
update: ## Обновление зависимостей и пересборка
|
update: ## Обновление зависимостей и пересборка
|
||||||
@echo "📦 Обновление зависимостей..."
|
@echo "📦 Обновление зависимостей..."
|
||||||
@git pull
|
@git pull
|
||||||
@docker-compose down
|
@$(DOCKER_COMPOSE) down
|
||||||
@docker-compose build --no-cache
|
@$(DOCKER_COMPOSE) build --no-cache
|
||||||
@docker-compose up -d
|
@$(DOCKER_COMPOSE) up -d
|
||||||
@echo "✅ Обновление завершено"
|
@echo "✅ Обновление завершено"
|
||||||
|
|
||||||
# === Production Deployment ===
|
# === Production Deployment ===
|
||||||
|
|
||||||
deploy: ## Развертывание в продакшен
|
deploy: ## Развертывание в продакшен
|
||||||
@echo "🚀 Развертывание в продакшен..."
|
@echo "🚀 Развертывание в продакшен..."
|
||||||
@docker-compose -f docker-compose.yml -f docker-compose.prod.yml down
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml down
|
||||||
@docker-compose -f docker-compose.yml -f docker-compose.prod.yml build --no-cache
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml build --no-cache
|
||||||
@docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||||||
@echo "✅ Продакшен развернут"
|
@echo "✅ Продакшен развернут"
|
||||||
|
|
||||||
# === SSL and Security ===
|
# === SSL and Security ===
|
||||||
@@ -86,7 +89,7 @@ ssl: ## Настройка SSL с Let's Encrypt
|
|||||||
echo "⚠️ Файл docker-compose.ssl.yml не найден. Создание..."; \
|
echo "⚠️ Файл docker-compose.ssl.yml не найден. Создание..."; \
|
||||||
$(MAKE) ssl-setup; \
|
$(MAKE) ssl-setup; \
|
||||||
fi
|
fi
|
||||||
@docker-compose -f docker-compose.yml -f docker-compose.ssl.yml up -d
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.ssl.yml up -d
|
||||||
@echo "✅ SSL настроен"
|
@echo "✅ SSL настроен"
|
||||||
|
|
||||||
ssl-setup: ## Создание конфигурации SSL
|
ssl-setup: ## Создание конфигурации SSL
|
||||||
@@ -110,40 +113,40 @@ ssl-cert: ## Получение SSL сертификата
|
|||||||
|
|
||||||
migrate: ## Выполнить миграции базы данных
|
migrate: ## Выполнить миграции базы данных
|
||||||
@echo "🗄️ Выполнение миграций..."
|
@echo "🗄️ Выполнение миграций..."
|
||||||
@docker-compose exec web python manage.py migrate
|
@$(DOCKER_COMPOSE) exec web python manage.py migrate
|
||||||
@echo "✅ Миграции выполнены"
|
@echo "✅ Миграции выполнены"
|
||||||
|
|
||||||
makemigrations: ## Создать новые миграции
|
makemigrations: ## Создать новые миграции
|
||||||
@echo "🗄️ Создание миграций..."
|
@echo "🗄️ Создание миграций..."
|
||||||
@docker-compose exec web python manage.py makemigrations
|
@$(DOCKER_COMPOSE) exec web python manage.py makemigrations
|
||||||
@echo "✅ Миграции созданы"
|
@echo "✅ Миграции созданы"
|
||||||
|
|
||||||
superuser: ## Создать суперпользователя
|
superuser: ## Создать суперпользователя
|
||||||
@echo "👤 Создание суперпользователя..."
|
@echo "👤 Создание суперпользователя..."
|
||||||
@docker-compose exec web python manage.py createsuperuser
|
@$(DOCKER_COMPOSE) exec web python manage.py createsuperuser
|
||||||
@echo "✅ Суперпользователь создан"
|
@echo "✅ Суперпользователь создан"
|
||||||
|
|
||||||
# === Maintenance ===
|
# === Maintenance ===
|
||||||
|
|
||||||
logs: ## Просмотр логов
|
logs: ## Просмотр логов
|
||||||
@docker-compose logs -f
|
@$(DOCKER_COMPOSE) logs -f
|
||||||
|
|
||||||
logs-web: ## Логи backend
|
logs-web: ## Логи backend
|
||||||
@docker-compose logs -f web
|
@$(DOCKER_COMPOSE) logs -f web
|
||||||
|
|
||||||
logs-frontend: ## Логи frontend
|
logs-frontend: ## Логи frontend
|
||||||
@docker-compose logs -f frontend
|
@$(DOCKER_COMPOSE) logs -f frontend
|
||||||
|
|
||||||
shell: ## Django shell
|
shell: ## Django shell
|
||||||
@docker-compose exec web python manage.py shell
|
@$(DOCKER_COMPOSE) exec web python manage.py shell
|
||||||
|
|
||||||
shell-db: ## Подключение к базе данных
|
shell-db: ## Подключение к базе данных
|
||||||
@docker-compose exec db psql -U links_user -d links_db
|
@$(DOCKER_COMPOSE) exec db psql -U links_user -d links_db
|
||||||
|
|
||||||
backup: ## Создать бэкап базы данных
|
backup: ## Создать бэкап базы данных
|
||||||
@echo "💾 Создание бэкапа..."
|
@echo "💾 Создание бэкапа..."
|
||||||
@mkdir -p backups
|
@mkdir -p backups
|
||||||
@docker-compose exec db pg_dump -U links_user links_db > backups/backup_$(shell date +%Y%m%d_%H%M%S).sql
|
@$(DOCKER_COMPOSE) exec db pg_dump -U links_user links_db > backups/backup_$(shell date +%Y%m%d_%H%M%S).sql
|
||||||
@echo "✅ Бэкап создан в папке backups/"
|
@echo "✅ Бэкап создан в папке backups/"
|
||||||
|
|
||||||
restore: ## Восстановить из бэкапа
|
restore: ## Восстановить из бэкапа
|
||||||
@@ -157,22 +160,22 @@ restore: ## Восстановить из бэкапа
|
|||||||
|
|
||||||
test: ## Запуск тестов
|
test: ## Запуск тестов
|
||||||
@echo "🧪 Запуск тестов..."
|
@echo "🧪 Запуск тестов..."
|
||||||
@docker-compose exec web python manage.py test
|
@$(DOCKER_COMPOSE) exec web python manage.py test
|
||||||
@echo "✅ Тесты завершены"
|
@echo "✅ Тесты завершены"
|
||||||
|
|
||||||
test-legacy: ## Запуск тестов (legacy pytest)
|
test-legacy: ## Запуск тестов (legacy pytest)
|
||||||
@docker-compose exec web pytest --maxfail=1 --disable-warnings -q
|
@$(DOCKER_COMPOSE) exec web pytest --maxfail=1 --disable-warnings -q
|
||||||
|
|
||||||
lint: ## Проверка кода
|
lint: ## Проверка кода
|
||||||
@echo "🔍 Проверка кода..."
|
@echo "🔍 Проверка кода..."
|
||||||
@docker-compose exec web flake8 . || true
|
@$(DOCKER_COMPOSE) exec web flake8 . || true
|
||||||
@docker-compose exec frontend npm run lint || true
|
@$(DOCKER_COMPOSE) exec frontend npm run lint || true
|
||||||
@echo "✅ Проверка завершена"
|
@echo "✅ Проверка завершена"
|
||||||
|
|
||||||
format: ## Форматирование кода
|
format: ## Форматирование кода
|
||||||
@echo "🎨 Форматирование кода..."
|
@echo "🎨 Форматирование кода..."
|
||||||
@docker-compose exec web black . || true
|
@$(DOCKER_COMPOSE) exec web black . || true
|
||||||
@docker-compose exec frontend npm run format || true
|
@$(DOCKER_COMPOSE) exec frontend npm run format || true
|
||||||
@echo "✅ Код отформатирован"
|
@echo "✅ Код отформатирован"
|
||||||
|
|
||||||
# === CI/CD Operations ===
|
# === CI/CD Operations ===
|
||||||
@@ -272,7 +275,7 @@ ssl-host-setup: ## Локальная установка nginx + certbot и на
|
|||||||
|
|
||||||
clean: ## Очистка системы
|
clean: ## Очистка системы
|
||||||
@echo "🧹 Очистка..."
|
@echo "🧹 Очистка..."
|
||||||
@docker-compose down -v
|
@$(DOCKER_COMPOSE) down -v
|
||||||
@docker system prune -f
|
@docker system prune -f
|
||||||
@docker volume prune -f
|
@docker volume prune -f
|
||||||
@echo "✅ Очистка завершена"
|
@echo "✅ Очистка завершена"
|
||||||
@@ -294,7 +297,7 @@ clean-all: ## Полная очистка (ОСТОРОЖНО!)
|
|||||||
|
|
||||||
status: ## Статус сервисов
|
status: ## Статус сервисов
|
||||||
@echo "📊 Статус сервисов:"
|
@echo "📊 Статус сервисов:"
|
||||||
@docker-compose ps
|
@$(DOCKER_COMPOSE) ps
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "🌐 URL-адреса:"
|
@echo "🌐 URL-адреса:"
|
||||||
@echo " Frontend: http://localhost:3000"
|
@echo " Frontend: http://localhost:3000"
|
||||||
@@ -306,7 +309,7 @@ health: ## Проверка здоровья сервисов
|
|||||||
@echo "🏥 Проверка здоровья..."
|
@echo "🏥 Проверка здоровья..."
|
||||||
@curl -s http://localhost:3000 > /dev/null && echo "✅ Frontend: OK" || echo "❌ Frontend: ERROR"
|
@curl -s http://localhost:3000 > /dev/null && echo "✅ Frontend: OK" || echo "❌ Frontend: ERROR"
|
||||||
@curl -s http://localhost:8000/api/ > /dev/null && echo "✅ Backend: OK" || echo "❌ Backend: ERROR"
|
@curl -s http://localhost:8000/api/ > /dev/null && echo "✅ Backend: OK" || echo "❌ Backend: ERROR"
|
||||||
@docker-compose exec db pg_isready -U links_user && echo "✅ Database: OK" || echo "❌ Database: ERROR"
|
@$(DOCKER_COMPOSE) exec db pg_isready -U links_user && echo "✅ Database: OK" || echo "❌ Database: ERROR"
|
||||||
|
|
||||||
info: ## Информация о проекте
|
info: ## Информация о проекте
|
||||||
@echo "📋 CatLink - Информация о проекте"
|
@echo "📋 CatLink - Информация о проекте"
|
||||||
|
|||||||
Reference in New Issue
Block a user