updates
This commit is contained in:
75
Makefile
Normal file
75
Makefile
Normal file
@ -0,0 +1,75 @@
|
||||
# Project Variables
|
||||
ENV_FILE=.env
|
||||
ENV_EXAMPLE=.env.example
|
||||
DOCKER_COMPOSE=docker compose
|
||||
PROJECT_NAME=plant_price_tracker
|
||||
|
||||
# Commands
|
||||
.PHONY: help up down rebuild logs status seed shell dbshell reset test
|
||||
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@echo " up - Build and start the app (bootstraps .env if needed)"
|
||||
@echo " down - Stop and remove containers"
|
||||
@echo " rebuild - Rebuild containers from scratch"
|
||||
@echo " logs - Show logs for all services"
|
||||
@echo " status - Show container health status"
|
||||
@echo " seed - Manually seed the database"
|
||||
@echo " shell - Open a bash shell in the web container"
|
||||
@echo " dbshell - Open a MySQL shell"
|
||||
@echo " reset - Nuke everything and restart clean"
|
||||
@echo " test - Run test suite (TBD)"
|
||||
|
||||
up:
|
||||
@if [ ! -f $(ENV_FILE) ]; then \
|
||||
echo "[⚙] Generating .env from example..."; \
|
||||
cp $(ENV_EXAMPLE) $(ENV_FILE); \
|
||||
fi
|
||||
$(DOCKER_COMPOSE) up --build -d
|
||||
@$(MAKE) wait
|
||||
|
||||
down:
|
||||
$(DOCKER_COMPOSE) down
|
||||
|
||||
rebuild:
|
||||
$(DOCKER_COMPOSE) down -v --remove-orphans
|
||||
$(DOCKER_COMPOSE) up --build -d
|
||||
@$(MAKE) wait
|
||||
|
||||
logs:
|
||||
$(DOCKER_COMPOSE) logs -f
|
||||
|
||||
status:
|
||||
@echo "[📊] Health status of containers:"
|
||||
@docker ps --filter "name=$(PROJECT_NAME)-" --format "table {{.Names}}\t{{.Status}}"
|
||||
|
||||
seed:
|
||||
@docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-web") flask seed-admin
|
||||
|
||||
shell:
|
||||
@docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-web") bash
|
||||
|
||||
dbshell:
|
||||
@docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-db") \
|
||||
mysql -u$$(grep MYSQL_USER $(ENV_FILE) | cut -d '=' -f2) \
|
||||
-p$$(grep MYSQL_PASSWORD $(ENV_FILE) | cut -d '=' -f2) \
|
||||
$$(grep MYSQL_DATABASE $(ENV_FILE) | cut -d '=' -f2)
|
||||
|
||||
reset:
|
||||
@echo "[💣] Nuking containers and volumes..."
|
||||
$(DOCKER_COMPOSE) down -v --remove-orphans
|
||||
@echo "[🧼] Cleaning caches and migrations..."
|
||||
sudo rm -rf __pycache__ */__pycache__ */*/__pycache__ *.pyc *.pyo *.db migrations
|
||||
@echo "[🚀] Rebuilding project fresh..."
|
||||
@$(MAKE) up
|
||||
|
||||
test:
|
||||
@echo "[🚧] Test suite placeholder"
|
||||
# insert pytest or unittest commands here
|
||||
|
||||
wait:
|
||||
@echo "[⏳] Waiting for web container to be healthy..."
|
||||
@until [ "$$(docker inspect -f '{{.State.Health.Status}}' $(PROJECT_NAME)-web-1 2>/dev/null)" = "healthy" ]; do \
|
||||
printf "."; sleep 2; \
|
||||
done
|
||||
@echo "\n[✅] Web container is healthy!"
|
Reference in New Issue
Block a user