| .. | ||
| devcontainer.json | ||
| docker-compose.dev.yml | ||
| php-upload-limits.ini | ||
| Readme.md | ||
Laravel Sail DevContainer Setup
Diese Dokumentation beschreibt die Einrichtung und Verwendung des DevContainers für das Laravel Sail-Projekt.
Übersicht
Der DevContainer ermöglicht es, das Laravel-Projekt in einer vollständig konfigurierten Docker-Umgebung zu entwickeln, ohne dass lokale PHP-, Node.js- oder andere Abhängigkeiten installiert werden müssen.
Voraussetzungen
- Docker Desktop installiert und laufend
- Cursor.ai oder VS Code mit DevContainer-Erweiterung
- Git (für Repository-Zugriff)
Konfiguration
1. DevContainer-Konfiguration (devcontainer.json)
Die Hauptkonfiguration befindet sich in .devcontainer/devcontainer.json:
- Eigenständiges Docker-Image: Verwendet
sail-8.4/appdirekt ohne Docker Compose - Build-Konfiguration: Definiert Build-Argumente für
WWWUSERundWWWGROUP - Workspace:
/var/www/html(Standard-Laravel-Verzeichnis) - Benutzer:
sail(Laravel Sail Standard-Benutzer) - Features: Leer (Tools werden über postCreateCommand installiert)
- Extensions: PHP, Laravel Blade, Tailwind CSS Extensions
- Port-Forwarding: Automatisch für wichtige Services (5173, 33061, 6380, 8025)
2. Dockerfile-Anpassungen (docker/8.4/Dockerfile)
Das Dockerfile wurde angepasst um:
ARG WWWUSERhinzugefügt für korrekte Benutzer-ID- Benutzererstellung mit dynamischen IDs (
$WWWUSERstatt feste1337) - Vollständige Laravel-Umgebung mit PHP 8.4, Composer, NPM, Git
Installation
Automatische Installation (Empfohlen)
- Öffnen Sie das Projekt in Cursor.ai oder VS Code
- Klicken Sie auf "Reopen in Container" wenn die DevContainer-Benachrichtigung erscheint
- Warten Sie bis der Container gebaut und gestartet ist
Manuelle Installation
Falls die automatische Installation fehlschlägt, können Sie den Container manuell bauen:
cd /Users/pandora/Sites/b2in.local
docker build --build-arg WWWUSER=501 --build-arg WWWGROUP=20 -f docker/8.4/Dockerfile -t sail-8.4/app docker/8.4
Verfügbare Tools
Nach der Installation sind folgende Tools verfügbar:
- PHP 8.4.12: Mit Xdebug für Debugging
- Composer: Für Laravel-Abhängigkeiten
- NPM: Für Frontend-Assets
- Git: Für Versionskontrolle
- Node.js: Für JavaScript-Entwicklung
Überprüfen Sie die Installation:
which git
which npm
which composer
php --version
Post-Create-Befehle
Nach dem Erstellen des Containers werden automatisch ausgeführt:
- Composer-Abhängigkeiten (
composer install)
Entwicklung
Erste Schritte
- Composer-Abhängigkeiten: Werden automatisch installiert
- Laravel-Konfiguration:
.envDatei muss manuell erstellt werden (siehe Laravel-Dokumentation) - Datenbank-Migrationen:
php artisan migrate - Asset-Kompilierung:
npm install && npm run dev
Häufige Befehle
# Laravel-Befehle
php artisan migrate
php artisan serve
php artisan tinker
# Composer
composer install
composer update
# NPM/Node
npm install
npm run dev
npm run build
# Sail-Befehle (falls verfügbar)
./vendor/bin/sail up
./vendor/bin/sail artisan migrate
Troubleshooting
Container startet nicht
- Überprüfen Sie ob Docker Desktop läuft
- Stellen Sie sicher, dass keine anderen Container die benötigten Ports blockieren
- Versuchen Sie einen Clean-Build:
docker build --no-cache ...
Berechtigungsprobleme
Die Container sind so konfiguriert, dass sie mit Ihrer lokalen Benutzer-ID (501) laufen, um Berechtigungsprobleme zu vermeiden.
NPM Global Install Probleme
Falls Sie globale NPM-Pakete installieren möchten, verwenden Sie lokale Installation:
# Lokale Installation (empfohlen)
npm install package-name
# Oder NPM-Prefix ändern
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Claude CLI Kompatibilitätsprobleme
Problem: Das @anthropic-ai/claude-code Paket ist nicht mit modernen Node.js-Versionen kompatibel.
Symptome:
- Viele veraltete Abhängigkeiten (deprecated packages)
- PhantomJS ARM64 Kompatibilitätsprobleme
- Engine-Konflikte mit Node.js v22
Lösung:
curl -fsSL https://claude.ai/install.sh | bash echo 'export PATH="/root/.local/bin:$PATH"' >> /home/sail/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> /home/sail/.bashrc
source /home/sail/.bashrc
Port-Konflikte
Falls Ports bereits belegt sind, können Sie die Port-Mapping in der DevContainer-Konfiguration anpassen.
Erweiterte Konfiguration
Zusätzliche Extensions hinzufügen
Bearbeiten Sie devcontainer.json und fügen Sie Extensions zum extensions Array hinzu:
"extensions": [
"bmewburn.vscode-intelephense-client",
"onecentlin.laravel-blade",
"shufo.vscode-blade-formatter",
"bradlc.vscode-tailwindcss",
"ihrc.vscode-php-cs-fixer"
]
Zusätzliche Tools installieren
Fügen Sie Tools zum postCreateCommand hinzu:
"postCreateCommand": "composer install --no-interaction --prefer-dist --optimize-autoloader && npm install -g your-tool"
Support
Bei Problemen mit dem DevContainer:
- Überprüfen Sie die Docker-Logs:
docker logs <container-name> - Stellen Sie sicher, dass alle Umgebungsvariablen korrekt gesetzt sind
- Versuchen Sie einen Neustart des DevContainers
Bekannte Probleme und Lösungen
DevContainer-CLI Kompatibilität
Problem: DevContainer-CLI erstellt temporäre Docker-Compose-Dateien die mit der Konfiguration kollidieren.
Lösung: Verwendung eines eigenständigen Docker-Images ohne Docker Compose-Abhängigkeit.
Features-Installation
Problem: DevContainer Features können zu Build-Fehlern führen.
Lösung: Tools werden über postCreateCommand installiert statt über Features.
Root-Berechtigungen
Problem: Der sail-Benutzer hat keine Root-Rechte für Paket-Installation.
Lösung: Alle notwendigen Tools sind bereits im Docker-Image installiert.
Letzte Aktualisierung: September 2025 Laravel Version: 12.x PHP Version: 8.4.12 Docker Version: 2.x Status: ✅ Vollständig funktionsfähig