Skip to main content

Was ist Sail

Laravel Sail ist ein schlankes Kommandozeilen-Interface, um die Docker-Entwicklungsumgebung von Laravel zu bedienen. Sie bauen damit eine Laravel-Anwendung mit PHP, MySQL und Redis auf – auch ohne Docker-Vorkenntnisse. Kern von Sail sind die Datei compose.yaml im Projekt-Root und das Skript sail. Das sail-Skript bietet praktische CLI-Methoden zur Steuerung der in compose.yaml definierten Container. Laravel Sail läuft unter macOS, Linux und Windows (über WSL2).
In Laravel 13 ist Sail nicht mehr die Standard-Entwicklungsumgebung. In der Skeleton-composer.json fehlt laravel/sail; stattdessen gibt es den Befehl composer setup. Standard ist ein Setup mit lokalem PHP + SQLite.
Wenn Sie Docker-Container brauchen, können Sie Sail wie gewohnt installieren und nutzen.
Sail ist ein Werkzeug für die lokale Entwicklung. Der Produktivbetrieb ist damit nicht vorgesehen. Für die Produktion sollten Sie eine eigene Docker-/Cloud-Konfiguration einrichten.

Installation

In ein bestehendes Projekt

Installieren Sie das Paket mit Composer.
1

Sail-Paket hinzufügen

2

Konfigurationsdateien veröffentlichen

Führen Sie den Artisan-Befehl sail:install aus. Er legt compose.yaml im Projekt-Root an und ergänzt in der .env die notwendigen Umgebungsvariablen.
Sie können interaktiv Dienste auswählen (MySQL, Redis, Mailpit usw.).
3

Sail starten

Der erste Start dauert etwas, da Docker-Images heruntergeladen werden. Danach ist die Anwendung unter http://localhost erreichbar.
Mit Docker Desktop for Linux verwenden Sie den default-Kontext: docker context use default. Bei Dateirechte-Problemen im Container setzen Sie SUPERVISOR_PHP_USER auf root.

Weitere Dienste hinzufügen

Um einer bestehenden Sail-Installation weitere Dienste hinzuzufügen, nutzen Sie sail:add.

Devcontainer nutzen

Um in einem Devcontainer zu arbeiten, verwenden Sie die Option --devcontainer.

Konfiguration

Shell-Alias einrichten

Standardmäßig müssen Sie jedes Mal ./vendor/bin/sail schreiben. Ein Alias erlaubt schlicht sail.
Ergänzen Sie das in ~/.zshrc oder ~/.bashrc und starten Sie die Shell neu.
Nach dem Setzen des Alias können Sie in allen Beispielen dieser Doku sail statt ./vendor/bin/sail schreiben.

Images neu bauen

Wenn Sie Pakete aktuell halten möchten, bauen Sie die Images neu.

Start und Stopp

Um alle in compose.yaml definierten Container zu starten, verwenden Sie up.
Stoppen mit stop; im Vordergrund mit Strg + C.

Ablauf beim Start


Kommandos ausführen

Mit Sail läuft die Anwendung in einem Docker-Container. PHP-, Artisan-, Composer- und Node/NPM-Kommandos rufen Sie alle über sail auf.
Die in der Doku üblichen Befehle php artisan, composer, npm führen Sie in Sail-Umgebungen mit vorangestelltem sail aus.

PHP

Composer

Artisan

Node / NPM

Container-CLI (Shell)

Sie können auch direkt eine Bash-Session im Container öffnen.
Für eine Tinker-Session:

Dienste

Ein Überblick über die von Sail bereitgestellten Dienste, die Sie bei sail:install auswählen können.

MySQL

Standardmäßig in compose.yaml enthalten. Daten werden über ein Docker-Volume persistiert. Beim ersten Start werden zwei Datenbanken angelegt: eine für die Anwendung und eine testing-Datenbank. Setzen Sie in der .env DB_HOST auf mysql.
Für die Verbindung vom Host aus nutzen Sie GUI-Tools wie TablePlus. Der Standardport ist 3306.

Redis

Setzen Sie REDIS_HOST auf redis.

Valkey

Um als Redis-Alternative Valkey zu verwenden, setzen Sie REDIS_HOST auf valkey.

Mailpit

Fängt lokal versendete E-Mails ab und zeigt sie in einer Web-UI an.
Die Web-UI ist während des Sail-Laufs unter http://localhost:8025 erreichbar.

Meilisearch / Typesense

Zusammen mit Laravel Scout testen Sie damit die Volltextsuche.
  • Meilisearch: MEILISEARCH_HOST=http://meilisearch:7700
  • Typesense: TYPESENSE_HOST=typesense, TYPESENSE_PORT=8108 usw.

RustFS (S3-kompatibler Storage)

Wenn Sie in Produktion Amazon S3 verwenden wollen, können Sie lokal einen S3-kompatiblen Storage emulieren.

Tests ausführen

sail test entspricht intern sail artisan test. Die eigene Datenbank testing bleibt vom Entwicklungsstand unberührt.

Laravel Dusk

Mit Sail können Sie Dusk-Browsertests ausführen, ohne Selenium lokal zu installieren. Kommentieren Sie den Selenium-Dienst in compose.yaml aus:
Auf Apple Silicon (M1/M2/M3) verwenden Sie das Image selenium/standalone-chromium.
Anschließend führen Sie die Dusk-Tests aus:

PHP- und Node-Versionen

PHP-Version wechseln

Ändern Sie in compose.yaml den build.context des Containers laravel.test.
Danach das Image neu bauen:

Zusätzliche PHP-Erweiterungen

Die Sail-Runtime enthält gängige PHP-Erweiterungen. Wenn Ihre Anwendung zusätzliche benötigt, ergänzen Sie in compose.yaml beim Service laravel.test das Build-Argument PHP_EXTENSIONS (Leerzeichen-getrennt), sodass sie beim Build installiert werden.
Anschließend das Container-Image neu bauen:

Node-Version wechseln


Site öffentlich teilen

Zum Kollegen-Preview oder für Webhook-Tests können Sie Ihre Site temporär öffentlich zugänglich machen.
Sie erhalten eine zufällige URL auf laravel-sail.site. Damit URL-Generierungshelfer korrekt funktionieren, setzen Sie in bootstrap/app.php einen Trusted Proxy:
Auch eine feste Subdomain ist möglich.

Xdebug

Aktivieren

Veröffentlichen Sie zunächst die Konfigurationsdateien mit sail:publish und ergänzen Sie in der .env:
Stellen Sie sicher, dass die veröffentlichte php.ini folgende Zeilen enthält.
Anschließend das Image neu bauen:

CLI-Debugging

Browser-Debugging

Für den Ablauf, eine Debug-Session vom Browser aus zu starten, lesen Sie die Xdebug-Dokumentation. Nutzer von PhpStorm profitieren von Zero-configuration debugging.
Sail bedient die App über artisan serve. XDEBUG_CONFIG und XDEBUG_MODE werden erst ab Laravel 8.53.0 akzeptiert. Bei älteren Versionen funktioniert die Debug-Verbindung nicht.

Anpassen

Zum Anpassen der Dockerfiles und Konfigurationen veröffentlichen Sie die Dateien mit sail:publish.
Die Dockerfiles liegen anschließend im Verzeichnis docker/. Nach Änderungen bauen Sie die Container neu:

Unterschiede zur Produktion

Sail ist für lokale Entwicklung gedacht – nicht für Produktion. Für Docker-Deployments in Produktion nutzen Sie Dienste wie Laravel Cloud, Forge oder Ploi oder eine eigene Docker-Compose- bzw. Kubernetes-Konfiguration.
Wesentliche Unterschiede zusammengefasst:
Zuletzt geändert am 13. Juli 2026