# Dish Planner - Docker Commands .PHONY: help help: ## Show this help message @echo "Dish Planner - Docker Management" @echo "" @echo "Usage: make [command]" @echo "" @echo "Available commands:" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}' # Development Commands .PHONY: dev dev: ## Start development environment docker compose up -d @echo "Development server running at http://localhost:8000" @echo "Mailhog available at http://localhost:8025" .PHONY: dev-build dev-build: ## Build and start development environment docker compose build docker compose up -d .PHONY: dev-stop dev-stop: ## Stop development environment docker compose down .PHONY: dev-clean dev-clean: ## Stop and remove volumes (CAUTION: removes database) docker compose down -v .PHONY: logs logs: ## Show application logs docker compose logs -f app .PHONY: logs-db logs-db: ## Show database logs docker compose logs -f db # Production Commands .PHONY: prod-build prod-build: ## Build production image for Codeberg ./bin/build-push.sh .PHONY: prod-build-tag prod-build-tag: ## Build with specific tag (usage: make prod-build-tag TAG=v1.0.0) ./bin/build-push.sh $(TAG) .PHONY: prod-login prod-login: ## Login to Codeberg registry podman login codeberg.org # Laravel Commands .PHONY: artisan artisan: ## Run artisan command (usage: make artisan cmd="migrate") docker compose exec app php artisan $(cmd) .PHONY: composer composer: ## Run composer command (usage: make composer cmd="require package") docker compose exec app composer $(cmd) .PHONY: npm npm: ## Run npm command (usage: make npm cmd="install package") docker compose exec app npm $(cmd) .PHONY: migrate migrate: ## Run database migrations docker compose exec app php artisan migrate .PHONY: seed seed: ## Seed the database docker compose exec app php artisan db:seed .PHONY: fresh fresh: ## Fresh migrate and seed docker compose exec app php artisan migrate:fresh --seed .PHONY: tinker tinker: ## Start Laravel tinker docker compose exec app php artisan tinker .PHONY: test test: ## Run tests docker compose exec app php artisan test # Utility Commands .PHONY: shell shell: ## Enter app container shell docker compose exec app sh .PHONY: db-shell db-shell: ## Enter database shell docker compose exec db mariadb -u dishplanner -pdishplanner dishplanner .PHONY: clear clear: ## Clear all Laravel caches docker compose exec app php artisan cache:clear docker compose exec app php artisan config:clear docker compose exec app php artisan route:clear docker compose exec app php artisan view:clear .PHONY: optimize optimize: ## Optimize Laravel for production docker compose exec app php artisan config:cache docker compose exec app php artisan route:cache docker compose exec app php artisan view:cache docker compose exec app php artisan livewire:discover # Installation .PHONY: install install: ## First time setup @echo "Setting up Dish Planner..." @cp -n .env.example .env || true @echo "Generating application key..." @docker compose build @docker compose up -d @sleep 5 @docker compose exec app php artisan key:generate @docker compose exec app php artisan migrate @echo "" @echo "✅ Installation complete!" @echo "Access the app at: http://localhost:8000" @echo "Create your first planner and user to get started."