在以前一直使用Laradock建置開發環境,最近想嘗試Laravel Sail來建制開發環境,嘗試後發現Laravel Sail比Laradock更輕鬆上手,所以紀錄一下使用方法。
介紹
Laravel Sail是一個輕量級的命令行界面,用於與 Laravel 的默認 Docker 開發環境進行交互。Sail 為使用 PHP、MySQL 和 Redis 構建 Laravel 應用程序提供了一個很好的起點,而無需之前的 Docker 經驗。
Sail 的核心是存儲在項目根目錄中的docker-compose.yml
文件和腳本。sail
該腳本為 CLI 提供了與文件sail
定義的 Docker 容器交互的便捷方法。docker-compose.yml
macOS、Linux 和 Windows(通過WSL2)支持 Laravel Sail。
引用自https://laravel.com/docs/9.x/sail#introduction
設置Laravel Sail(全新專案)
新專案使用官方提供腳本產生專案,只要將example-app更改為你的專案名稱,使用指令如下:
curl -s "https://laravel.build/example-app" | bash
預設會產生專案名稱資料夾,以上面範例就是產生example-app資料夾,裡面包含最新Laravel與所需要Docker設定,預設服務包含mysql
、redis
、meilisearch
、 mailhog
和selenium
,當然也可以指定所需服務如下:
curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
設置Laravel Sail(舊專案)
舊專案可以透過composer 安裝 Laravel Sail,使用指令如下:
composer require laravel/sail --dev
接著使用 artisan 指令產出 docker-compose.yml,使用指令如下:
php artisan sail:install
選擇想要使用的服務,後續就等待Docker設置。
設置Shell別名
在運行Laravel前,可以先配置Alias,不配置的話需要運行./vendor/bin/sail up才能啟動專案,但在開發時候打很長指令想想就頭痛,所以最簡單就是在終端環境內配置Alias:
echo 'alias sail="./vendor/bin/sail"' >> ~/.zshrc
source ~/.zshrc
上面是使用zsh terminal,如果是bash需要再修改成~/.bashrc,這時候執行sail up就能測試是否可以訪問。
Laravel Sail 常用指令
啟動開發環境需要使用sail up指令,就會開始運行容器,如果想終止容器,只需 Ctrl + C 終止容器。
sail up
如果需要再背景運行,只需要加上 -d
,使用指令如下:
sail up -d
終止Laravel Sail全部服務,使用指令如下:
sail stop
想要終止 Laravel Sail與刪除所有服務容器,使用指令如下:
sail down
使用 artisan 指令,一般都會使用php artisan …,但在使用Laravel Sail時候需要改成sail artisan …,舉例:
php artisan make:controller TestController
執行 PHP、Composer、Node或NPM指令,會在前加入sail,舉例:
sail php --version
sail composer require laravel/sanctum
sail node --version
sail npm run dev
另外有一個很酷功能就是能產生臨時網址,沒有公網IP也能運作,需要在容器運作時候,輸入以下指令:
sail share
會產生類似下列資訊:
Thank you for using expose.
Shared URL: host.docker.internal:80
Dashboard: http://127.0.0.1:4040
Public HTTP: http://[隨機產生].laravel-sail.site:8080
Public HTTPS: https://[臨時產生].laravel-sail.site
當然也可以透過指定子域名,只要加上 --subdomain
[子域名],使用指令如下:
sail share --subdomain=[子域名]
phpMyAdmin設置
雖然phpMyAdmin並不是必要服務,但開發時候真的很方便,可以透過修改docker-compose.yml將phpMyAdmin包含在裡面,如果有需要其他服務Laravel Sail沒有提供,也能透過類似方法進行添加。
首先打開docker-compose.yml,並在depends_on添加phpmyadmin,並添加phpmyadmin設置:
...省略...
services:
depends_on:
- mysql
- redis
- meilisearch
- mailhog
- selenium
- phpmyadmin
phpmyadmin:
image: 'phpmyadmin:latest'
ports:
- 8080:80
networks:
- sail
environment:
- PMA_ARBITRARY=1
mysql:
image: 'mysql/mysql-server:8.0'
...省略...
修改完成後重新啟動(sail up),再打開http://127.0.0.1:8080/就會看到熟悉phpMyAdmin畫面。