# Laravel Docker Development Makefile .PHONY: help install up down restart build logs shell composer artisan npm test fresh # Database profile (default: mysql) DB ?= mysql # Default target help: @echo "Laravel Docker Development Commands" @echo "====================================" @echo "" @echo "Setup:" @echo " make install DB=mysql - First-time setup with MySQL" @echo " make install DB=pgsql - First-time setup with PostgreSQL" @echo " make install DB=sqlite - First-time setup with SQLite" @echo " make build - Build Docker images" @echo "" @echo "Docker (use DB=mysql|pgsql|sqlite):" @echo " make up - Start containers (default: MySQL)" @echo " make up DB=pgsql - Start with PostgreSQL" @echo " make up DB=sqlite - Start with SQLite" @echo " make down - Stop all containers" @echo " make restart - Restart all containers" @echo " make logs - View container logs" @echo "" @echo "Development:" @echo " make shell - Open shell in app container" @echo " make composer - Run composer (use: make composer cmd='install')" @echo " make artisan - Run artisan (use: make artisan cmd='migrate')" @echo " make npm - Run npm (use: make npm cmd='install')" @echo " make tinker - Open Laravel Tinker" @echo "" @echo "Database:" @echo " make migrate - Run migrations" @echo " make fresh - Fresh migrate with seeders" @echo " make seed - Run database seeders" @echo "" @echo "Testing:" @echo " make test - Run PHPUnit tests" @echo " make test-coverage - Run tests with coverage" @echo "" @echo "Frontend:" @echo " make vite - Start Vite dev server" @echo " make build-assets - Build frontend assets" # Setup install: build @echo "Creating Laravel project..." docker-compose --profile $(DB) run --rm app composer create-project laravel/laravel . @echo "Setting up environment for $(DB)..." cp src/.env.$(DB) src/.env || cp src/.env.example src/.env docker-compose --profile $(DB) run --rm app php artisan key:generate @echo "" @echo "Installation complete!" @echo "Run 'make up DB=$(DB)' to start with $(DB) database." build: docker-compose build # Docker commands up: docker-compose --profile $(DB) up -d @echo "Started with $(DB) database profile." down: docker-compose --profile mysql --profile pgsql --profile sqlite down restart: docker-compose --profile $(DB) restart logs: docker-compose logs -f # Development shell: docker-compose exec app bash composer: docker-compose exec app composer $(cmd) artisan: docker-compose exec app php artisan $(cmd) npm: docker-compose run --rm node npm $(cmd) tinker: docker-compose exec app php artisan tinker # Database migrate: docker-compose exec app php artisan migrate fresh: docker-compose exec app php artisan migrate:fresh --seed seed: docker-compose exec app php artisan db:seed # Testing (Pest) test: docker-compose exec app php artisan test test-coverage: docker-compose exec app php artisan test --coverage test-filter: docker-compose exec app php artisan test --filter=$(filter) test-module: docker-compose exec app php artisan test tests/Modules/$(module) test-parallel: docker-compose exec app php artisan test --parallel # Code Quality lint: docker-compose exec app ./vendor/bin/pint lint-check: docker-compose exec app ./vendor/bin/pint --test # Frontend vite: docker-compose run --rm --service-ports node npm run dev build-assets: docker-compose run --rm node npm run build # Post-install (run after Laravel is installed) setup-tools: docker-compose exec app bash -c "cd /var/www/html && bash /var/www/html/../scripts/post-install.sh" # Laravel base setup (auth, API, middleware) setup-laravel: docker-compose exec app bash -c "cd /var/www/html && bash /var/www/html/../scripts/laravel-setup.sh" # Full setup (tools + laravel) setup-all: setup-tools setup-laravel # Queue Worker queue-start: docker-compose --profile queue up -d queue queue-stop: docker-compose stop queue queue-restart: docker-compose restart queue queue-logs: docker-compose logs -f queue # Scheduler scheduler-start: docker-compose --profile scheduler up -d scheduler scheduler-stop: docker-compose stop scheduler # Database Backup/Restore backup: @bash scripts/backup.sh restore: @bash scripts/restore.sh $(file) # Health Check health: docker-compose exec app php artisan health:check # Cleanup clean: docker-compose down -v --remove-orphans docker system prune -f