Laravel Sail 是 Laravel 框架的官方開發環境。 Sail 提供了一個輕量級的命令列介面 (CLI),可以使用 Docker 輕鬆設定和管理 Laravel 應用程式開發環境。下面,我們來說明 Laravel Sail 的主要特性和使用方法。
當您使用 Docker 和 Laravel Sail 建立專案時,結構將如上圖所示。
開發環境
先決條件
在建立 Laravel 專案之前,請下載並啟動 Docker Desktop。
https://www.docker.com/products/docker-desktop/
執行以下指令建立一個新的 Laravel 專案並設定 Laravel Sail。
curl -s "https://laravel.build/example-app" | bash cd example-app
這將建立 Laravel 專案檔。產生的 docker-compose.yml 檔案中描述了開發環境。
如果要指定PHP版本或使用PostgreSQL而不是MySQL,可以在產生專案時在指令中用=
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
移動到專案目錄並啟動 Sail。
./vendor/bin/sail up -d
此命令啟動 Docker 容器並執行 Laravel 應用程式。
輸入 ./vendor/bin/sail 很麻煩,因此請將其儲存為 shell 設定檔中的別名 sail。
使用以下指令檢查您正在使用的 shell 的路徑
echo $SHELL
範例:/bin/zsh
編輯 Shell 設定檔
Shell 設定檔是 ~/.zshrc。
若要新增別名,請執行以下命令
curl -s "https://laravel.build/example-app" | bash cd example-app
shell 設定檔是 ~/.bash_profile 或 ~/.bashrc。
若要新增別名,請執行以下命令:
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
透過上述設置,您可以以縮寫形式執行 sail 命令。
./vendor/bin/sail up -d
您可以使用Sail執行各種開發任務。以下是一些範例。
echo $SHELL
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc source ~/.zshrc
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile source ~/.bash_profile
sail up -d
sail up -d
即使在建立專案後,您也可以透過修改 docker-compose.yml 檔案(即 Docker 設定檔)來變更服務。在這裡,我們將更改 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中文網其他相關文章!