68 lines
2.7 KiB
Makefile
68 lines
2.7 KiB
Makefile
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
|