1+ install :
2+ pip install uv
3+ uv sync
4+
5+ set-env :
6+ @if [ -z " $( ENV) " ]; then \
7+ echo " ENV is not set. Usage: make set-env ENV=development|staging|production" ; \
8+ exit 1; \
9+ fi
10+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ] && [ " $( ENV) " != " test" ]; then \
11+ echo " ENV is not valid. Must be one of: development, staging, production, test" ; \
12+ exit 1; \
13+ fi
14+ @echo " Setting environment to $( ENV) "
15+ @bash -c " source scripts/set_env.sh $( ENV) "
16+
17+ prod :
18+ @echo " Starting server in production environment"
19+ @bash -c " source scripts/set_env.sh production && ./.venv/bin/python -m uvicorn app.main:app --host 0.0.0.0 --port 8000"
20+
21+ staging :
22+ @echo " Starting server in staging environment"
23+ @bash -c " source scripts/set_env.sh staging && ./.venv/bin/python -m uvicorn app.main:app --host 0.0.0.0 --port 8000"
24+
25+ dev :
26+ @echo " Starting server in development environment"
27+ @bash -c " source scripts/set_env.sh development && uv run uvicorn app.main:app --reload --port 8000"
28+
29+ lint :
30+ ruff check .
31+
32+ format :
33+ ruff format .
34+
35+ clean :
36+ rm -rf .venv
37+ rm -rf __pycache__
38+ rm -rf .pytest_cache
39+
40+ docker-build :
41+ docker build -t fastapi-langgraph-template .
42+
43+ docker-build-env :
44+ @if [ -z " $( ENV) " ]; then \
45+ echo " ENV is not set. Usage: make docker-build-env ENV=development|staging|production" ; \
46+ exit 1; \
47+ fi
48+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ]; then \
49+ echo " ENV is not valid. Must be one of: development, staging, production" ; \
50+ exit 1; \
51+ fi
52+ @./scripts/build-docker.sh $(ENV )
53+
54+ docker-run :
55+ docker run -p 8000:8000 fastapi-langgraph-template
56+
57+ docker-run-env :
58+ @if [ -z " $( ENV) " ]; then \
59+ echo " ENV is not set. Usage: make docker-run-env ENV=development|staging|production" ; \
60+ exit 1; \
61+ fi
62+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ]; then \
63+ echo " ENV is not valid. Must be one of: development, staging, production" ; \
64+ exit 1; \
65+ fi
66+ @./scripts/run-docker.sh $(ENV )
67+
68+ docker-logs :
69+ @if [ -z " $( ENV) " ]; then \
70+ echo " ENV is not set. Usage: make docker-logs ENV=development|staging|production" ; \
71+ exit 1; \
72+ fi
73+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ]; then \
74+ echo " ENV is not valid. Must be one of: development, staging, production" ; \
75+ exit 1; \
76+ fi
77+ @./scripts/logs-docker.sh $(ENV )
78+
79+ docker-stop :
80+ @if [ -z " $( ENV) " ]; then \
81+ echo " ENV is not set. Usage: make docker-stop ENV=development|staging|production" ; \
82+ exit 1; \
83+ fi
84+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ]; then \
85+ echo " ENV is not valid. Must be one of: development, staging, production" ; \
86+ exit 1; \
87+ fi
88+ @./scripts/stop-docker.sh $(ENV )
89+
90+ # Docker Compose commands for the entire stack
91+ docker-compose-up :
92+ @if [ -z " $( ENV) " ]; then \
93+ echo " ENV is not set. Usage: make docker-compose-up ENV=development|staging|production" ; \
94+ exit 1; \
95+ fi
96+ @if [ " $( ENV) " != " development" ] && [ " $( ENV) " != " staging" ] && [ " $( ENV) " != " production" ]; then \
97+ echo " ENV is not valid. Must be one of: development, staging, production" ; \
98+ exit 1; \
99+ fi
100+ APP_ENV=$(ENV ) docker-compose up -d
101+
102+ docker-compose-down :
103+ @if [ -z " $( ENV) " ]; then \
104+ echo " ENV is not set. Usage: make docker-compose-down ENV=development|staging|production" ; \
105+ exit 1; \
106+ fi
107+ APP_ENV=$(ENV ) docker-compose down
108+
109+ docker-compose-logs :
110+ @if [ -z " $( ENV) " ]; then \
111+ echo " ENV is not set. Usage: make docker-compose-logs ENV=development|staging|production" ; \
112+ exit 1; \
113+ fi
114+ APP_ENV=$(ENV ) docker-compose logs -f
115+
116+ # Help
117+ help :
118+ @echo " Usage: make <target>"
119+ @echo " Targets:"
120+ @echo " install: Install dependencies"
121+ @echo " set-env ENV=<environment>: Set environment variables (development, staging, production, test)"
122+ @echo " run ENV=<environment>: Set environment and run server"
123+ @echo " prod: Run server in production environment"
124+ @echo " staging: Run server in staging environment"
125+ @echo " dev: Run server in development environment"
126+ @echo " test: Run tests"
127+ @echo " clean: Clean up"
128+ @echo " docker-build: Build default Docker image"
129+ @echo " docker-build-env ENV=<environment>: Build Docker image for specific environment"
130+ @echo " docker-run: Run default Docker container"
131+ @echo " docker-run-env ENV=<environment>: Run Docker container for specific environment"
132+ @echo " docker-logs ENV=<environment>: View logs from running container"
133+ @echo " docker-stop ENV=<environment>: Stop and remove container"
134+ @echo " docker-compose-up: Start the entire stack (API, Prometheus, Grafana)"
135+ @echo " docker-compose-down: Stop the entire stack"
136+ @echo " docker-compose-logs: View logs from all services"
0 commit comments