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 filecompose.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).
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.Pubblica i file di configurazione
Esegui il comando Artisan Puoi scegliere i servizi in modo interattivo. Seleziona MySQL, Redis, Mailpit, ecc.
sail:install.
Questo comando pubblica compose.yaml nella root del progetto e aggiunge le variabili d’ambiente necessarie a .env.Aggiungere servizi aggiuntivi
Per aggiungere servizi a un’installazione Sail esistente, usa il comandosail: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.
~/.zshrc o ~/.bashrc e riavvia la shell.
Ricostruzione delle immagini
Se vuoi mantenere i pacchetti aggiornati, ricostruisci le immagini.Avvio e arresto
Per avviare tutti i container Docker definiti incompose.yaml usa il comando up.
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 tramitesail.
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.Servizi
Panoramica dei servizi forniti da Sail. Puoi selezionarli consail:install durante l’installazione.
MySQL
Incluso di default incompose.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.
3306.
Redis
ImpostandoREDIS_HOST a redis in .env puoi accedere a Redis dall’app.
Valkey
Se usi Valkey come alternativa a Redis, impostaREDIS_HOST su valkey.
Mailpit
Cattura le email inviate durante lo sviluppo locale e le mostra nell’anteprima Web UI.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 incompose.yaml.
Versione di PHP / Node
Cambiare la versione di PHP
Modificabuild.context del container laravel.test in compose.yaml.
Estensioni PHP aggiuntive
L’immagine runtime di Sail include estensioni PHP comuni. Se l’applicazione richiede estensioni aggiuntive, aggiungi l’argomento di buildPHP_EXTENSIONS separando i valori con spazi al servizio laravel.test di compose.yaml per installarle durante il build dell’immagine.
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.laravel-sail.site. Perché gli helper di generazione URL funzionino correttamente, configura i proxy fidati in bootstrap/app.php.
Xdebug
Attivazione
Prima pubblica i file di configurazione consail:publish, poi aggiungi in .env:
php.ini pubblicato contenga:
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.Personalizzazione
Per personalizzare i Dockerfile e i file di configurazione di Sail, pubblicali con il comandosail:publish.
docker/.
Dopo le modifiche ricostruisci i container.
Differenze rispetto alla produzione
Le principali differenze tra Sail e la produzione sono riassunte qui sotto.| Aspetto | Sail (locale) | Produzione |
|---|---|---|
| Obiettivo | Sviluppo, debug | Erogazione del servizio |
| Xdebug | Attivabile | Consigliato disattivato |
| Mailpit | Cattura ed anteprima delle email | Vero server di posta |
| Persistenza dati | Docker Volume | DB gestito, ecc. |
| Performance | Nessuna ottimizzazione | Ottimizzazione essenziale |