PY := $(CURDIR)/.venv/bin/python PIP := $(CURDIR)/.venv/bin/pip .PHONY: help venv run dev run-api run-front test build up down restart logs ps deploy nginx-print nginx-install help: ## Показать этот список команд @grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-10s\033[0m %s\n", $$1, $$2}' # --- локальный запуск (без Docker) ------------------------------------------- venv: ## Создать .venv и установить зависимости @test -x $(PY) || python3 -m venv .venv @test -x $(PIP) || { echo "Не удалось создать .venv — см. README, раздел «Если установка не идёт» (на Debian/Ubuntu нужен пакет python3-venv)"; exit 1; } @$(PIP) install -q --upgrade pip @$(PIP) install -q -r requirements-dev.txt @echo "Зависимости готовы (.venv). Дальше: make run" run: venv ## Запустить API и сайт локально, без Docker @echo "API: http://127.0.0.1:8000/status" @echo "Сайт: http://127.0.0.1:8080 (открыть в браузере)" @echo "Остановить: Ctrl+C" @trap 'kill 0' EXIT; \ (cd src/backend && $(PY) -m uvicorn main:app --reload --port 8000) & \ (cd src/frontend && $(PY) -m uvicorn main:app --reload --port 8080) & \ wait dev: run ## То же, что run run-api: venv ## Запустить только API (http://127.0.0.1:8000) cd src/backend && $(PY) -m uvicorn main:app --reload --port 8000 run-front: venv ## Запустить только сайт (http://127.0.0.1:8080) cd src/frontend && $(PY) -m uvicorn main:app --reload --port 8080 test: venv ## Прогнать тесты $(PY) -m pytest tests -q # --- Docker (продакшен) ------------------------------------------------------ build: ## Собрать образы docker compose build up: ## Запустить сервисы в фоне docker compose up -d down: ## Остановить и удалить контейнеры docker compose down restart: ## Перезапустить сервисы docker compose restart logs: ## Логи сервисов (Ctrl+C для выхода) docker compose logs -f ps: ## Статус сервисов docker compose ps deploy: ## Собрать и запустить (docker) ./deploy.sh # --- nginx (на сервере) ------------------------------------------------------ nginx-print: ## Показать конфиг nginx для этого стенда, ничего не меняя deploy/nginx-site.sh --print nginx-install: ## Сгенерировать, включить и перечитать конфиг nginx (запускать с sudo) sudo deploy/nginx-site.sh