No description
- PHP 49.6%
- Blade 39.5%
- Makefile 9.3%
- Dockerfile 1.6%
| docker | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Makefile | ||
| README.md | ||
Laravel Entwicklungsumgebung
PHP 8.3 · Laravel 12 · MySQL 8 · Nginx · Mailpit
Voraussetzungen
- Docker Desktop (Mac/Windows)
oder Docker Engine + Docker Compose v2 (Linux) make(auf Windows: Git Bash oder WSL empfohlen)
Erststart
# 1. Projekt klonen / diesen Ordner öffnen
cd laravel-dev
# 2. Alles auf einmal einrichten und starten
make setup
make setup erledigt automatisch:
.env-Dateien anlegen- Docker-Images bauen
- Container starten
- Laravel via Composer installieren
APP_KEYgenerieren- Session- & Queue-Tabellen anlegen (Datenbank-Treiber, kein Redis)
- Migrationen + Seeder ausführen
URLs
| Dienst | Adresse |
|---|---|
| App | http://localhost:8080 |
| Mailpit | http://localhost:8025 |
| MySQL | localhost:3306 |
Tägliche Arbeit
make up # Container starten
make down # Container stoppen
make logs # Live-Logs aller Container
make shell # Bash im PHP-Container (für composer, artisan etc.)
make tinker # Laravel Tinker (REPL)
make mysql # MySQL-Shell
Datenbank
make migrate # Neue Migrationen ausführen
make seed # Seeder ausführen
make fresh # Alles zurücksetzen + neu migrieren + seeden
Tests (PHPUnit)
make test # Alle Tests
make test-f F=AuthTest # Einzelner Test / Filter
make coverage # HTML-Report in src/storage/coverage/
Projektstruktur
laravel-dev/
├── docker-compose.yml
├── Makefile
├── .env.example ← Docker-Variablen (DB-Passwörter etc.)
├── docker/
│ ├── php/
│ │ ├── Dockerfile ← PHP 8.3 FPM + alle Extensions
│ │ └── php.ini ← Dev-Einstellungen
│ ├── nginx/
│ │ └── default.conf ← Laravel-optimierte Nginx-Config
│ └── mysql/
│ └── my.cnf ← UTF8MB4, Slow-Query-Log
└── src/ ← Laravel-Projektordner (wird gemountet)
└── .env.example ← Laravel .env Vorlage
Spatie Permission einrichten (RBAC)
Nach make setup im PHP-Container:
make shell
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
Dann in app/Models/User.php den Trait ergänzen:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable {
use HasRoles;
}
Auth-Scaffolding (Laravel Breeze)
make shell
composer require laravel/breeze --dev
php artisan breeze:install blade
php artisan migrate
npm install && npm run dev
Häufige Probleme
MySQL startet nicht: Volumes löschen und neu starten:
docker compose down -v
make setup
Permission-Fehler in storage/:
make shell
chmod -R 775 storage bootstrap/cache
Port 8080 oder 3306 belegt: In docker-compose.yml die Host-Ports anpassen:
ports:
- "8081:80" # Nginx
- "3307:3306" # MySQL