Skip to main content

Cos’è Sail

Laravel Sail è un’interfaccia a riga di comando leggera per gestire l’ambiente di sviluppo Docker di Laravel. Ti permette di costruire un’applicazione Laravel con PHP, MySQL e Redis senza conoscenze preliminari di Docker. Il cuore di Sail è il file compose.yaml collocato nella root del progetto e lo script sail. Lo script sail fornisce comodi metodi CLI per gestire i container Docker definiti in compose.yaml. Laravel Sail funziona su macOS, Linux e Windows (tramite WSL2).
In Laravel 13 Sail non è più l’ambiente di sviluppo standard. laravel/sail è stato rimosso dal composer.json dello scheletro e al suo posto è disponibile il comando composer setup. Lo standard è la configurazione con PHP locale + SQLite.
Se ti servono i container Docker, puoi comunque installare e usare Sail.
Sail è uno strumento pensato esclusivamente per lo sviluppo locale. Non è pensato per l’uso in produzione. Per la produzione prepara separatamente una configurazione Docker / cloud adeguata.

Installazione

Installazione in un progetto esistente

Installa il pacchetto con Composer.
1

Aggiungi il pacchetto Sail

2

Pubblica i file di configurazione

Esegui il comando Artisan sail:install. Questo comando pubblica compose.yaml nella root del progetto e aggiunge le variabili d’ambiente necessarie a .env.
Puoi scegliere i servizi in modo interattivo. Seleziona MySQL, Redis, Mailpit, ecc.
3

Avvia Sail

Al primo avvio il download delle immagini Docker richiede un po’ di tempo. Dopo l’avvio puoi accedere all’applicazione su http://localhost.
Se usi Docker Desktop for Linux, esegui docker context use default per usare il contesto default. Se all’interno dei container si verificano errori di permessi sui file, imposta la variabile d’ambiente SUPERVISOR_PHP_USER su root.

Aggiungere servizi aggiuntivi

Per aggiungere servizi a un’installazione Sail esistente, usa il comando sail:add.

Uso di Devcontainer

Se vuoi sviluppare all’interno di un Devcontainer, usa l’opzione --devcontainer.

Configurazione

Impostazione degli alias della shell

Di default devi digitare ogni volta ./vendor/bin/sail. Con un alias della shell puoi digitare solo sail.
Aggiungilo a ~/.zshrc o ~/.bashrc e riavvia la shell.
Dopo aver impostato l’alias, in tutti gli esempi di comando di questa documentazione puoi scrivere sail al posto di ./vendor/bin/sail.

Ricostruzione delle immagini

Se vuoi mantenere i pacchetti aggiornati, ricostruisci le immagini.

Avvio e arresto

Per avviare tutti i container Docker definiti in compose.yaml usa il comando up.
Per fermarli usa il comando stop, oppure premi Ctrl + C se sono in foreground.

Flusso di avvio


Esecuzione dei comandi

Con Sail l’applicazione gira all’interno di container Docker. I comandi PHP, Artisan, Composer, Node / NPM si eseguono tutti tramite sail.
I comandi php artisan, composer e npm frequenti nella documentazione ufficiale di Laravel devono essere eseguiti in ambiente Sail anteponendo sail.

Comandi PHP

Comandi Composer

Comandi Artisan

Comandi Node / NPM

CLI del container (shell)

Puoi anche aprire direttamente una sessione Bash all’interno del container.
Per aprire una sessione Tinker:

Servizi

Panoramica dei servizi forniti da Sail. Puoi selezionarli con sail:install durante l’installazione.

MySQL

Incluso di default in compose.yaml. I dati sono persistenti tramite Docker Volume. Al primo avvio vengono create automaticamente due database: uno per l’app e uno per il testing. Imposta DB_HOST a mysql in .env per accedervi dall’app.
Per collegarti dalla macchina locale usa un tool GUI come TablePlus. La porta predefinita è 3306.

Redis

Impostando REDIS_HOST a redis in .env puoi accedere a Redis dall’app.

Valkey

Se usi Valkey come alternativa a Redis, imposta REDIS_HOST su valkey.

Mailpit

Cattura le email inviate durante lo sviluppo locale e le mostra nell’anteprima Web UI.
Con Sail attivo puoi accedere alla Web UI di Mailpit su http://localhost:8025.

Meilisearch / Typesense

Puoi provare la ricerca full-text integrata con Laravel Scout.
  • Meilisearch: MEILISEARCH_HOST=http://meilisearch:7700
  • Typesense: TYPESENSE_HOST=typesense, TYPESENSE_PORT=8108, ecc.

RustFS (storage S3-compatibile)

Se prevedi di usare Amazon S3 in produzione, puoi emulare in locale uno storage S3-compatibile.

Esecuzione dei test

sail test è internamente equivalente a sail artisan test. Di default viene predisposto un database testing dedicato, così non influisci sui dati di sviluppo.

Laravel Dusk

Con Sail puoi eseguire i test browser Dusk senza installare Selenium in locale. Rimuovi il commento dal servizio Selenium in compose.yaml.
Su Apple Silicon (M1/M2/M3) usa l’immagine selenium/standalone-chromium.
Poi esegui i test Dusk.

Versione di PHP / Node

Cambiare la versione di PHP

Modifica build.context del container laravel.test in compose.yaml.
Dopo la modifica ricostruisci l’immagine.

Estensioni PHP aggiuntive

L’immagine runtime di Sail include estensioni PHP comuni. Se l’applicazione richiede estensioni aggiuntive, aggiungi l’argomento di build PHP_EXTENSIONS separando i valori con spazi al servizio laravel.test di compose.yaml per installarle durante il build dell’immagine.
Dopo aver aggiornato compose.yaml, ricostruisci le immagini dei container.

Cambiare la versione di Node


Condivisione pubblica del sito

Per anteprima ai colleghi o test di webhook, puoi pubblicare temporaneamente il sito all’esterno.
Viene generato un URL casuale su laravel-sail.site. Perché gli helper di generazione URL funzionino correttamente, configura i proxy fidati in bootstrap/app.php.
Puoi anche specificare un sottodominio.

Xdebug

Attivazione

Prima pubblica i file di configurazione con sail:publish, poi aggiungi in .env:
Verifica che il file php.ini pubblicato contenga:
Dopo la modifica ricostruisci l’immagine.

Debug via CLI

Debug via browser

Per le istruzioni per avviare una sessione di debug dal browser consulta la documentazione ufficiale di Xdebug. Se usi PhpStorm è comoda la configurazione Zero-configuration debugging.
Sail serve l’app con artisan serve. L’accettazione di XDEBUG_CONFIG e XDEBUG_MODE è a partire da Laravel 8.53.0. Nelle versioni precedenti la connessione di debug non funzionerà.

Personalizzazione

Per personalizzare i Dockerfile e i file di configurazione di Sail, pubblicali con il comando sail:publish.
Dopo la pubblicazione i Dockerfile si trovano nella directory docker/. Dopo le modifiche ricostruisci i container.

Differenze rispetto alla produzione

Sail è un ambiente dedicato allo sviluppo locale. Non è pensato per l’uso in produzione. Per il deploy Docker in produzione valuta servizi come Laravel Cloud, Forge, Ploi o una tua configurazione Docker Compose / Kubernetes.
Le principali differenze tra Sail e la produzione sono riassunte qui sotto.
Ultima modifica il 13 luglio 2026