關於 Laravel Sail
Laravel Sail 是 Laravel 框架的官方開發環境。 Sail 提供了一個輕量級的命令列介面 (CLI),可以使用 Docker 輕鬆設定和管理 Laravel 應用程式開發環境。下面,我們來說明 Laravel Sail 的主要特性和使用方法。
使用 Laravel Sail 的好處
-
建構獨立於作業系統的開發環境
- Sail 使用 Docker 來容器化 Laravel 應用程式的開發環境。這使您可以建立獨立於作業系統的開發環境。
-
輕鬆設定開發環境
- 使用 Sail,只需幾個指令即可建置 Laravel 開發環境。即使使用 MySQL、Redis、MailHog 等複雜的開發環境,也可以輕鬆建置。
-
輕鬆管理不同版本的專案
- 例如,Laravel 的版本取決於 PHP 的版本,但透過在 docker-compose.yml 檔案中設定每個專案的環境,可以輕鬆切換版本。
當您使用 Docker 和 Laravel Sail 建立專案時,結構將如上圖所示。
用法
開發環境
- Mac
- PHP v8.3
- Laravel v11
- Docker
先決條件
在建立 Laravel 專案之前,請下載並啟動 Docker Desktop。
https://www.docker.com/products/docker-desktop/
1. 建立 Laravel 項目
執行以下指令建立一個新的 Laravel 專案並設定 Laravel Sail。
curl -s "https://laravel.build/example-app" | bash cd example-app
這將建立 Laravel 專案檔。產生的 docker-compose.yml 檔案中描述了開發環境。
使用 with 查詢指定服務
如果要指定PHP版本或使用PostgreSQL而不是MySQL,可以在產生專案時在指令中用=
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
2. 起航
移動到專案目錄並啟動 Sail。
./vendor/bin/sail up -d
此命令啟動 Docker 容器並執行 Laravel 應用程式。
※註冊別名
輸入 ./vendor/bin/sail 很麻煩,因此請將其儲存為 shell 設定檔中的別名 sail。
使用以下指令檢查您正在使用的 shell 的路徑
echo $SHELL
範例:/bin/zsh
編輯 Shell 設定檔
- 對於 zsh
Shell 設定檔是 ~/.zshrc。
若要新增別名,請執行以下命令
curl -s "https://laravel.build/example-app" | bash cd example-app
- 對於 bash
shell 設定檔是 ~/.bash_profile 或 ~/.bashrc。
若要新增別名,請執行以下命令:
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
透過上述設置,您可以以縮寫形式執行 sail 命令。
./vendor/bin/sail up -d
3. 使用 Sail 指令
您可以使用Sail執行各種開發任務。以下是一些範例。
- 啟動應用程式:
echo $SHELL
- 停止應用程式:
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc source ~/.zshrc
- 執行 Artisan 指令:
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile source ~/.bash_profile
- 執行 Composer 指令:
sail up -d
- 執行 npm 指令:
sail up -d
4. 改變服務
即使在建立專案後,您也可以透過修改 docker-compose.yml 檔案(即 Docker 設定檔)來變更服務。在這裡,我們將更改 PHP 版本和使用的資料庫。
更改 PHP 版本
先檢查目前PHP版本
sail down
接下來修改docker-compose.yml檔案中所描述的開發環境資訊。
sail artisan migrate
將建置上下文和鏡像變更為 8.1 .
sail composer install
修改 docker-compose.yml 後,停止塗抹。
sail npm install
接下來,重建 Docker 容器以反映變更。
sail php -v PHP 8.3.12 (cli) (built: Sep 27 2024 03:53:05) (NTS)
重新啟動應用程式。
services: laravel.test: build: context: "./vendor/laravel/sail/runtimes/8.3" dockerfile: Dockerfile args: WWWGROUP: "${WWWGROUP}" image: "sail-8.3/app"
檢查PHP版本是否有變化。
services: laravel.test: build: context: "./vendor/laravel/sail/runtimes/8.1" dockerfile: Dockerfile args: WWWGROUP: "${WWWGROUP}" image: "sail-8.1/app"
PHP 版本已從 PHP 8.3 變更為 PHP 8.1。
更改使用的資料庫
將使用 MySQL 建立的專案變更為 PostgreSQL。
執行 Sail 安裝指令
sail down
選 pgsql
sail build --no-cache
檢查 docker-compose.yml 檔案並確認 pgsql 條目已新增。
sail up -d
ext,開啟專案目錄下的.env文件,確認設定了DB_CONNECTION=pgsql和DB_HOST=pgsql。
如果沒有,請手動更改它們。
sail php -v PHP 8.1.30 (cli) (built: Sep 27 2024 04:07:29) (NTS)
確認 docker-compose.yml 和 .env 中的變更後,停止應用程式。
sail php artisan sail:install
接下來,重建 Docker 容器以反映變更。
┌ Which services would you like to install? ───────────────────┐ │ ◼ mysql ┃ │ │ › ◻ pgsql │ │ │ ◻ mariadb │ │ │ ◻ redis │ │ │ ◻ memcached │ │ └────────────────────────────────────────────────── 1 selected ┘ Use the space bar to select options.
重新啟動應用程式。
services: laravel.test: ... depends_on: - mysql - redis - meilisearch - mailpit - selenium - pgsql ... pgsql: image: 'postgres:17' ports: - '${FORWARD_DB_PORT:-5432}:5432' environment: PGPASSWORD: '${DB_PASSWORD:-secret}' POSTGRES_DB: '${DB_DATABASE}' POSTGRES_USER: '${DB_USERNAME}' POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}' volumes: - 'sail-pgsql:/var/lib/postgresql/data' - './vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql' networks: - sail healthcheck: test: - CMD - pg_isready - '-q' - '-d' - '${DB_DATABASE}' - '-U' - '${DB_USERNAME}' retries: 3 timeout: 5s
運行遷移檔案。
DB_CONNECTION=pgsql DB_HOST=pgsql DB_PORT=5432 DB_DATABASE=laravel DB_USERNAME=sail DB_PASSWORD=******
在 Docker 啟動 shell 並檢查 pgsql
顯示目前正在執行的 Docker 容器的清單。
curl -s "https://laravel.build/example-app" | bash cd example-app
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
檢查應用程式的容器名稱並在 Docker 內啟動應用程式的 bash。
./vendor/bin/sail up -d
連接到 pgsql。
echo $SHELL
系統將提示您輸入密碼,因此請輸入 .env 檔案中指定的 DB_PASSWORD。
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc source ~/.zshrc
檢查pgsql中的表格
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile source ~/.bash_profile
這樣,即使建立了項目,也可以從 MySQL 更改為 PostgreSQL。
結論
透過本文,您將了解如何使用 Laravel Sail 有效地設定和管理開發環境。透過根據專案的需求選擇合適的服務並自訂設置,您可以實現更靈活、更強大的開發環境。
以上是【Laravel vx Docker】利用 Laravel Sail 高效率搭建 Laravel 應用開發環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能