什麼是 Sail
Laravel Sail 是操作 Laravel Docker 開發環境的輕量命令列介面。 可讓你在完全不需要 Docker 事前知識的情況下,建立使用 PHP、MySQL、Redis 的 Laravel 應用程式。 Sail 的核心是位於專案根目錄的compose.yaml 檔案與 sail 腳本。
sail 腳本提供便利的 CLI 方法,用於操作 compose.yaml 中定義的 Docker 容器。
Laravel Sail 在 macOS、Linux、Windows(透過 WSL2)皆可運作。
Sail 是本機開發專用工具。並非設計用於正式環境。
正式環境請另外準備合適的 Docker/雲端配置。
安裝
於既有專案安裝
以 Composer 安裝套件。1
加入 Sail 套件
2
發布設定檔
執行 可用互動式方式選擇服務。請選擇 MySQL、Redis、Mailpit 等。
sail:install Artisan 指令。
此指令會將 compose.yaml 發布到專案根目錄,並在 .env 補上必要的環境變數。3
啟動 Sail
http://localhost 存取應用程式。追加服務
要在既有 Sail 中追加服務,使用sail:add 指令。
使用 Devcontainer
若想在 Devcontainer 中開發,使用--devcontainer 選項。
設定
Shell 別名設定
預設每次都需輸入./vendor/bin/sail。
設定 shell 別名後,僅輸入 sail 即可。
~/.zshrc 或 ~/.bashrc 再重啟 shell。
重新建置 image
若想保持套件為最新狀態,可重新建置 image。啟動與停止
要啟動compose.yaml 中定義的所有 Docker 容器,使用 up 指令。
stop 指令;若在前景執行則可按 Ctrl + C。
啟動流程
執行指令
使用 Sail 時,應用程式在 Docker 容器中運作。 PHP 指令、Artisan 指令、Composer 指令、Node/NPM 指令,都須透過sail 執行。
Laravel 官方文件中常見的
php artisan、composer、npm 指令,
在 Sail 環境中請在前面加上 sail 執行。PHP 指令
Composer 指令
Artisan 指令
Node / NPM 指令
容器 CLI(shell)
也可以直接在容器內開啟 Bash session。服務
以下為 Sail 提供的服務概要。安裝時可透過sail:install 選擇。
MySQL
預設已包含在compose.yaml 中。
資料以 Docker Volume 永久保存。首次啟動時會自動建立應用用與 testing 用共 2 個資料庫。
將 .env 的 DB_HOST 設為 mysql,即可從應用存取。
3306。
Redis
將.env 的 REDIS_HOST 設為 redis,即可從應用存取 Redis。
Valkey
若要使用 Redis 的替代方案 Valkey,將REDIS_HOST 設為 valkey。
Mailpit
可在本機開發中攔截寄出的信件,並以 Web UI 預覽。http://localhost:8025 存取 Mailpit 的 Web UI。
Meilisearch / Typesense
可與 Laravel Scout 整合,嘗試全文搜尋。- Meilisearch:
MEILISEARCH_HOST=http://meilisearch:7700 - Typesense:
TYPESENSE_HOST=typesense、TYPESENSE_PORT=8108等
RustFS(S3 相容儲存)
若正式環境預計使用 Amazon S3,可在本機模擬 S3 相容儲存。執行測試
sail test 內部等同於 sail artisan test。預設會準備專用的 testing 資料庫,不會影響開發資料。
Laravel Dusk
使用 Sail,即可在不需本機安裝 Selenium 的情況下執行 Dusk 的瀏覽器測試。 請取消compose.yaml 中 Selenium 服務的註解。
PHP/Node 版本
變更 PHP 版本
變更compose.yaml 中 laravel.test 容器的 build.context。
追加 PHP 擴充功能
Sail 的 runtime image 已包含常用的 PHP 擴充功能。若應用程式需要額外擴充功能,可於compose.yaml 的 laravel.test 服務加入以空白分隔的 PHP_EXTENSIONS build 引數,在建置 image 時安裝。
compose.yaml 後請重新建置容器 image。
變更 Node 版本
對外分享網站
為了讓同事預覽或測試 Webhook,可以將網站暫時對外公開。laravel-sail.site URL。為了讓 URL 產生 helper 正確運作,請在 bootstrap/app.php 設定可信任的 proxy。
Xdebug
啟用
首先以sail:publish 發布設定檔,再於 .env 加入以下:
php.ini 檔案包含下列設定:
CLI 除錯
瀏覽器除錯
從瀏覽器啟動除錯 session 的步驟,請參考 Xdebug 官方文件。 若使用 PhpStorm,設定 Zero-configuration debugging 會很方便。自訂
要自訂 Sail 的 Dockerfile 或設定檔,使用sail:publish 指令發布。
docker/ 目錄中會放置 Dockerfile。
變更後請重新建置容器。