From e6776015fc1b9d5a419f804be583ea139a59cb9f Mon Sep 17 00:00:00 2001 From: "Andrey K. Choi" Date: Sun, 2 Nov 2025 07:30:42 +0900 Subject: [PATCH] some fixes --- Makefile | 69 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index 829af5f..db0381f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ # 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 # Default target @@ -23,21 +26,21 @@ install: ## Установка и первый запуск dev: ## Запуск в режиме разработки @echo "🔧 Запуск в режиме разработки..." - @docker-compose up + @$(DOCKER_COMPOSE) up dev-bg: ## Запуск в фоне для разработки @echo "🔧 Запуск в фоне..." - @docker-compose up -d + @$(DOCKER_COMPOSE) up -d @echo "✅ Запущено в фоне" @echo "📱 Frontend: http://localhost:3000" @echo "🔧 Backend: http://localhost:8000" up: ## Запуск с пересборкой (legacy) - @docker-compose up -d --build + @$(DOCKER_COMPOSE) up -d --build down: ## Остановка всех сервисов @echo "⏹️ Остановка сервисов..." - @docker-compose down + @$(DOCKER_COMPOSE) down @echo "✅ Сервисы остановлены" stop: ## Остановка всех сервисов (alias) @@ -45,37 +48,37 @@ stop: ## Остановка всех сервисов (alias) restart: ## Перезапуск сервисов @echo "🔄 Перезапуск сервисов..." - @docker-compose down - @docker-compose up -d + @$(DOCKER_COMPOSE) down + @$(DOCKER_COMPOSE) up -d @echo "✅ Сервисы перезапущены" # === Build Commands === build: ## Сборка без кэша @echo "🏗️ Сборка контейнеров..." - @docker-compose build --no-cache + @$(DOCKER_COMPOSE) build --no-cache @echo "✅ Сборка завершена" build-prod: ## Сборка для продакшена @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 "✅ Продакшен сборка готова" update: ## Обновление зависимостей и пересборка @echo "📦 Обновление зависимостей..." @git pull - @docker-compose down - @docker-compose build --no-cache - @docker-compose up -d + @$(DOCKER_COMPOSE) down + @$(DOCKER_COMPOSE) build --no-cache + @$(DOCKER_COMPOSE) up -d @echo "✅ Обновление завершено" # === Production Deployment === deploy: ## Развертывание в продакшен @echo "🚀 Развертывание в продакшен..." - @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 up -d + @$(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 up -d @echo "✅ Продакшен развернут" # === SSL and Security === @@ -86,7 +89,7 @@ ssl: ## Настройка SSL с Let's Encrypt echo "⚠️ Файл docker-compose.ssl.yml не найден. Создание..."; \ $(MAKE) ssl-setup; \ 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 настроен" ssl-setup: ## Создание конфигурации SSL @@ -110,40 +113,40 @@ ssl-cert: ## Получение SSL сертификата migrate: ## Выполнить миграции базы данных @echo "🗄️ Выполнение миграций..." - @docker-compose exec web python manage.py migrate + @$(DOCKER_COMPOSE) exec web python manage.py migrate @echo "✅ Миграции выполнены" makemigrations: ## Создать новые миграции @echo "🗄️ Создание миграций..." - @docker-compose exec web python manage.py makemigrations + @$(DOCKER_COMPOSE) exec web python manage.py makemigrations @echo "✅ Миграции созданы" superuser: ## Создать суперпользователя @echo "👤 Создание суперпользователя..." - @docker-compose exec web python manage.py createsuperuser + @$(DOCKER_COMPOSE) exec web python manage.py createsuperuser @echo "✅ Суперпользователь создан" # === Maintenance === logs: ## Просмотр логов - @docker-compose logs -f + @$(DOCKER_COMPOSE) logs -f logs-web: ## Логи backend - @docker-compose logs -f web + @$(DOCKER_COMPOSE) logs -f web logs-frontend: ## Логи frontend - @docker-compose logs -f frontend + @$(DOCKER_COMPOSE) logs -f frontend shell: ## Django shell - @docker-compose exec web python manage.py shell + @$(DOCKER_COMPOSE) exec web python manage.py shell 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: ## Создать бэкап базы данных @echo "💾 Создание бэкапа..." @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/" restore: ## Восстановить из бэкапа @@ -157,22 +160,22 @@ restore: ## Восстановить из бэкапа test: ## Запуск тестов @echo "🧪 Запуск тестов..." - @docker-compose exec web python manage.py test + @$(DOCKER_COMPOSE) exec web python manage.py test @echo "✅ Тесты завершены" 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: ## Проверка кода @echo "🔍 Проверка кода..." - @docker-compose exec web flake8 . || true - @docker-compose exec frontend npm run lint || true + @$(DOCKER_COMPOSE) exec web flake8 . || true + @$(DOCKER_COMPOSE) exec frontend npm run lint || true @echo "✅ Проверка завершена" format: ## Форматирование кода @echo "🎨 Форматирование кода..." - @docker-compose exec web black . || true - @docker-compose exec frontend npm run format || true + @$(DOCKER_COMPOSE) exec web black . || true + @$(DOCKER_COMPOSE) exec frontend npm run format || true @echo "✅ Код отформатирован" # === CI/CD Operations === @@ -272,7 +275,7 @@ ssl-host-setup: ## Локальная установка nginx + certbot и на clean: ## Очистка системы @echo "🧹 Очистка..." - @docker-compose down -v + @$(DOCKER_COMPOSE) down -v @docker system prune -f @docker volume prune -f @echo "✅ Очистка завершена" @@ -294,7 +297,7 @@ clean-all: ## Полная очистка (ОСТОРОЖНО!) status: ## Статус сервисов @echo "📊 Статус сервисов:" - @docker-compose ps + @$(DOCKER_COMPOSE) ps @echo "" @echo "🌐 URL-адреса:" @echo " Frontend: http://localhost:3000" @@ -306,7 +309,7 @@ health: ## Проверка здоровья сервисов @echo "🏥 Проверка здоровья..." @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" - @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: ## Информация о проекте @echo "📋 CatLink - Информация о проекте"