177 lines
4.5 KiB
Makefile
177 lines
4.5 KiB
Makefile
# 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
|