136 lines
4.1 KiB
Makefile
136 lines
4.1 KiB
Makefile
.PHONY: help dev prod stop logs logs-dev logs-prod rebuild rebuild-dev clean install test migrate sync-now sync-logs
|
|
|
|
# Default target
|
|
help:
|
|
@echo "Feuerwehr Dashboard - Available Commands"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " make dev - Start local development database"
|
|
@echo " make logs-dev - Show development logs"
|
|
@echo " make rebuild-dev - Rebuild development services"
|
|
@echo ""
|
|
@echo "Production:"
|
|
@echo " make prod - Deploy production environment (includes migrations)"
|
|
@echo " make migrate - Run database migrations against production DB"
|
|
@echo " make logs-prod - Show production logs"
|
|
@echo " make rebuild - Rebuild production services"
|
|
@echo ""
|
|
@echo "FDISK Sync:"
|
|
@echo " make sync-now - Trigger an immediate sync (runs in existing container)"
|
|
@echo " make sync-logs - Follow sync container logs"
|
|
@echo ""
|
|
@echo "General:"
|
|
@echo " make stop - Stop all services"
|
|
@echo " make clean - Remove all containers and volumes"
|
|
@echo " make install - Install dependencies for backend, frontend and sync"
|
|
@echo " make test - Run tests"
|
|
@echo ""
|
|
|
|
# Development
|
|
dev:
|
|
@echo "Starting local development database..."
|
|
docker compose -f docker-compose.dev.yml up -d
|
|
@echo ""
|
|
@echo "Database is ready at localhost:5432"
|
|
@echo "Database: feuerwehr_dev"
|
|
@echo "User: dev_user"
|
|
@echo "Password: dev_password"
|
|
|
|
logs-dev:
|
|
docker compose -f docker-compose.dev.yml logs -f
|
|
|
|
rebuild-dev:
|
|
docker compose -f docker-compose.dev.yml up -d --build --force-recreate
|
|
|
|
# Production
|
|
prod:
|
|
@if [ ! -f .env ]; then \
|
|
echo "Error: .env file not found!"; \
|
|
echo "Please copy .env.example to .env and configure it:"; \
|
|
echo " cp .env.example .env"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "Starting production deployment..."
|
|
docker compose -f docker-compose.yml up -d --build
|
|
@echo ""
|
|
@echo "Running database migrations..."
|
|
@$(MAKE) migrate
|
|
@echo ""
|
|
@echo "Production services are running!"
|
|
|
|
migrate:
|
|
@if [ ! -f .env ]; then \
|
|
echo "Error: .env file not found! Run 'cp .env.example .env' first."; \
|
|
exit 1; \
|
|
fi
|
|
@echo "Waiting for database to be ready..."
|
|
@until docker compose -f docker-compose.yml exec -T postgres \
|
|
pg_isready -U "$${POSTGRES_USER:-prod_user}" -d "$${POSTGRES_DB:-feuerwehr_prod}" \
|
|
> /dev/null 2>&1; do \
|
|
printf '.'; sleep 2; \
|
|
done
|
|
@echo ""
|
|
@echo "Running migrations..."
|
|
docker compose -f docker-compose.yml exec -T backend npm run migrate
|
|
@echo "Migrations complete!"
|
|
|
|
logs-prod:
|
|
docker compose -f docker-compose.yml logs -f
|
|
|
|
logs:
|
|
@$(MAKE) logs-prod
|
|
|
|
rebuild:
|
|
docker compose -f docker-compose.yml up -d --build --force-recreate
|
|
|
|
# FDISK Sync
|
|
sync-now:
|
|
@echo "Triggering immediate FDISK sync..."
|
|
docker compose -f docker-compose.yml exec -T fdisk-sync kill -USR1 1 2>/dev/null || \
|
|
docker compose -f docker-compose.yml restart fdisk-sync
|
|
@echo "Sync triggered. Follow with: make sync-logs"
|
|
|
|
sync-logs:
|
|
docker compose -f docker-compose.yml logs -f fdisk-sync
|
|
|
|
# General commands
|
|
stop:
|
|
@echo "Stopping all services..."
|
|
docker compose -f docker-compose.yml down 2>/dev/null || true
|
|
docker compose -f docker-compose.dev.yml down 2>/dev/null || true
|
|
@echo "All services stopped"
|
|
|
|
clean:
|
|
@echo "Warning: This will remove all containers, volumes, and images!"
|
|
@read -p "Are you sure? [y/N] " -n 1 -r; \
|
|
echo; \
|
|
if [ "$$REPLY" = "y" ] || [ "$$REPLY" = "Y" ]; then \
|
|
docker compose -f docker-compose.yml down -v 2>/dev/null || true; \
|
|
docker compose -f docker-compose.dev.yml down -v 2>/dev/null || true; \
|
|
docker images | grep feuerwehr | awk '{print $$3}' | xargs docker rmi -f 2>/dev/null || true; \
|
|
echo "Cleanup complete!"; \
|
|
else \
|
|
echo "Cleanup cancelled"; \
|
|
fi
|
|
|
|
# Install dependencies
|
|
install:
|
|
@echo "Installing backend dependencies..."
|
|
cd backend && npm install
|
|
@echo ""
|
|
@echo "Installing frontend dependencies..."
|
|
cd frontend && npm install
|
|
@echo ""
|
|
@echo "Installing sync dependencies..."
|
|
cd sync && npm install
|
|
@echo ""
|
|
@echo "Dependencies installed!"
|
|
|
|
# Run tests
|
|
test:
|
|
@echo "Running backend tests..."
|
|
cd backend && npm test
|
|
@echo ""
|
|
@echo "Running frontend tests..."
|
|
cd frontend && npm test
|