initial
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# mycoolmusicapp — dev workflow shortcuts.
|
||||
# `make` or `make help` lists targets.
|
||||
|
||||
COMPOSE := docker compose
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
.PHONY: help env up build rebuild down stop restart ps logs logs-api logs-webui \
|
||||
sh-api sh-webui db-shell redis-cli migrate makemigration downgrade \
|
||||
test test-api test-webui lint fmt clean prune \
|
||||
prod-build prod-build-api prod-build-webui
|
||||
|
||||
help: ## Show this help
|
||||
@grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
|
||||
| awk 'BEGIN{FS=":.*?## "}{printf " \033[36m%-18s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
env: ## Create .env from .env.example (no overwrite)
|
||||
@test -f .env || cp .env.example .env && echo ".env ready"
|
||||
|
||||
## ---- lifecycle -------------------------------------------------------
|
||||
up: env ## Build (if needed) + start the full dev stack
|
||||
$(COMPOSE) up --build
|
||||
|
||||
build: ## Build all images
|
||||
$(COMPOSE) build
|
||||
|
||||
rebuild: ## Rebuild images with no cache
|
||||
$(COMPOSE) build --no-cache
|
||||
|
||||
down: ## Stop and remove containers
|
||||
$(COMPOSE) down
|
||||
|
||||
stop: ## Stop containers (keep them)
|
||||
$(COMPOSE) stop
|
||||
|
||||
restart: ## Restart all services
|
||||
$(COMPOSE) restart
|
||||
|
||||
ps: ## Show container status
|
||||
$(COMPOSE) ps
|
||||
|
||||
## ---- logs ------------------------------------------------------------
|
||||
logs: ## Tail logs (all services)
|
||||
$(COMPOSE) logs -f --tail=100
|
||||
|
||||
logs-api: ## Tail api logs
|
||||
$(COMPOSE) logs -f --tail=100 api
|
||||
|
||||
logs-webui: ## Tail webui logs
|
||||
$(COMPOSE) logs -f --tail=100 webui
|
||||
|
||||
## ---- shells ----------------------------------------------------------
|
||||
sh-api: ## Shell into the api container
|
||||
$(COMPOSE) exec api bash
|
||||
|
||||
sh-webui: ## Shell into the webui container
|
||||
$(COMPOSE) exec webui sh
|
||||
|
||||
db-shell: ## psql into the database
|
||||
$(COMPOSE) exec db psql -U $${POSTGRES_USER:-mcma} -d $${POSTGRES_DB:-mcma}
|
||||
|
||||
redis-cli: ## redis-cli into redis
|
||||
$(COMPOSE) exec redis redis-cli
|
||||
|
||||
## ---- database migrations (alembic) -----------------------------------
|
||||
migrate: ## Apply latest migrations
|
||||
$(COMPOSE) exec api alembic upgrade head
|
||||
|
||||
makemigration: ## Autogenerate a migration: make makemigration m="msg"
|
||||
$(COMPOSE) exec api alembic revision --autogenerate -m "$(m)"
|
||||
|
||||
downgrade: ## Roll back one migration
|
||||
$(COMPOSE) exec api alembic downgrade -1
|
||||
|
||||
## ---- quality ---------------------------------------------------------
|
||||
test: test-api test-webui ## Run all tests
|
||||
|
||||
test-api: ## Run backend tests
|
||||
$(COMPOSE) exec api pytest
|
||||
|
||||
test-webui: ## Run frontend tests
|
||||
$(COMPOSE) exec webui npm test
|
||||
|
||||
lint: ## Lint backend + frontend
|
||||
$(COMPOSE) exec api ruff check .
|
||||
$(COMPOSE) exec webui npm run lint
|
||||
|
||||
fmt: ## Format backend + frontend
|
||||
$(COMPOSE) exec api ruff format .
|
||||
$(COMPOSE) exec webui npm run format
|
||||
|
||||
## ---- cleanup ---------------------------------------------------------
|
||||
clean: ## Stop + remove containers AND volumes (DESTROYS db data)
|
||||
$(COMPOSE) down -v
|
||||
|
||||
prune: ## Docker system prune (dangling images/build cache)
|
||||
docker system prune -f
|
||||
|
||||
## ---- production image builds (no compose yet) ------------------------
|
||||
prod-build: prod-build-api prod-build-webui ## Build both prod images
|
||||
|
||||
prod-build-api: ## Build the backend prod image
|
||||
docker build -f mcma-backend/dockerfiles/Dockerfile.prod -t mcma-backend:prod ./mcma-backend
|
||||
|
||||
prod-build-webui: ## Build the webui prod image
|
||||
docker build -f mcma-webui/dockerfiles/Dockerfile.prod -t mcma-webui:prod ./mcma-webui
|
||||
Reference in New Issue
Block a user