mirror of
https://github.com/furyhawk/lta_datamall_api.git
synced 2026-07-20 09:48:00 +00:00
100 lines
3.2 KiB
Makefile
100 lines
3.2 KiB
Makefile
APP_MODULE=app.main:app
|
|
HOST=0.0.0.0
|
|
|
|
-include .env
|
|
|
|
APP_PORT ?= 8000
|
|
|
|
PYTHON_RUN=uv run
|
|
|
|
CONTAINER_ENGINE:=$(shell if command -v podman >/dev/null 2>&1; then echo podman; elif command -v docker >/dev/null 2>&1; then echo docker; else echo ""; fi)
|
|
COMPOSE_CMD:=$(shell if command -v podman >/dev/null 2>&1; then if podman compose version >/dev/null 2>&1; then echo "podman compose"; elif command -v podman-compose >/dev/null 2>&1; then echo podman-compose; fi; elif command -v docker >/dev/null 2>&1; then echo "docker compose"; else echo ""; fi)
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help check-engine check-compose sync run dev prod compile clean \
|
|
image-build image-run image-stop compose-up compose-down compose-logs compose-ps \
|
|
valkey-up valkey-down
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " sync Install/sync dependencies via uv"
|
|
@echo " run Run API in dev mode (reload)"
|
|
@echo " dev Alias for run"
|
|
@echo " prod Run API with gunicorn via uv"
|
|
@echo " compile Compile-check Python sources"
|
|
@echo " clean Remove local virtual env and caches"
|
|
@echo " image-build Build container image with Dockerfile"
|
|
@echo " image-run Run container image (detached)"
|
|
@echo " image-stop Stop and remove running container"
|
|
@echo " compose-up Start compose stack (Podman or Docker)"
|
|
@echo " compose-down Stop compose stack"
|
|
@echo " compose-logs Follow compose logs"
|
|
@echo " compose-ps Show compose services"
|
|
@echo " valkey-up Start only Valkey service"
|
|
@echo " valkey-down Stop and remove only Valkey service"
|
|
@echo ""
|
|
@echo "Detected container engine: $(if $(CONTAINER_ENGINE),$(CONTAINER_ENGINE),none)"
|
|
@echo "Detected compose command: $(if $(COMPOSE_CMD),$(COMPOSE_CMD),none)"
|
|
|
|
check-engine:
|
|
@if [ -z "$(CONTAINER_ENGINE)" ]; then \
|
|
echo "No container engine found. Install podman or docker."; \
|
|
exit 1; \
|
|
fi
|
|
|
|
check-compose:
|
|
@if [ -z "$(COMPOSE_CMD)" ]; then \
|
|
echo "No compose command found. Install podman compose, podman-compose, or docker compose."; \
|
|
exit 1; \
|
|
fi
|
|
|
|
sync:
|
|
$(PYTHON_RUN) python --version >/dev/null
|
|
uv sync
|
|
|
|
run:
|
|
$(PYTHON_RUN) uvicorn $(APP_MODULE) --host $(HOST) --port $(APP_PORT) --reload
|
|
|
|
dev: run
|
|
|
|
prod:
|
|
$(PYTHON_RUN) gunicorn $(APP_MODULE) -k uvicorn.workers.UvicornWorker -w 4 -b $(HOST):$(APP_PORT) --access-logfile - --error-logfile -
|
|
|
|
compile:
|
|
$(PYTHON_RUN) python -m compileall app
|
|
|
|
clean:
|
|
rm -rf .venv
|
|
find . -type d -name __pycache__ -prune -exec rm -rf {} +
|
|
find . -type f -name "*.pyc" -delete
|
|
|
|
image-build: check-engine
|
|
$(CONTAINER_ENGINE) build -t lta-datamall-bus-backend:latest .
|
|
|
|
image-run: check-engine
|
|
$(CONTAINER_ENGINE) run -d --name lta-datamall-bus-backend --env-file .env -p $(APP_PORT):$(APP_PORT) lta-datamall-bus-backend:latest
|
|
|
|
image-stop: check-engine
|
|
-$(CONTAINER_ENGINE) stop lta-datamall-bus-backend
|
|
-$(CONTAINER_ENGINE) rm lta-datamall-bus-backend
|
|
|
|
compose-up: check-compose
|
|
$(COMPOSE_CMD) up --build -d
|
|
|
|
compose-down: check-compose
|
|
$(COMPOSE_CMD) down
|
|
|
|
compose-logs: check-compose
|
|
$(COMPOSE_CMD) logs -f
|
|
|
|
compose-ps: check-compose
|
|
$(COMPOSE_CMD) ps
|
|
|
|
valkey-up: check-compose
|
|
$(COMPOSE_CMD) up -d valkey
|
|
|
|
valkey-down: check-compose
|
|
$(COMPOSE_CMD) stop valkey
|
|
$(COMPOSE_CMD) rm -f valkey
|