首頁  >  文章  >  後端開發  >  【Laravel vx Docker】利用 Laravel Sail 高效率搭建 Laravel 應用開發環境

【Laravel vx Docker】利用 Laravel Sail 高效率搭建 Laravel 應用開發環境

Susan Sarandon
Susan Sarandon原創
2024-10-23 08:07:01565瀏覽

關於 Laravel Sail

Laravel Sail 是 Laravel 框架的官方開發環境。 Sail 提供了一個輕量級的命令列介面 (CLI),可以使用 Docker 輕鬆設定和管理 Laravel 應用程式開發環境。下面,我們來說明 Laravel Sail 的主要特性和使用方法。

使用 Laravel Sail 的好處

  1. 建構獨立於作業系統的開發環境
    • Sail 使用 Docker 來容器化 Laravel 應用程式的開發環境。這使您可以建立獨立於作業系統的開發環境。
  2. 輕鬆設定開發環境
    • 使用 Sail,只需幾個指令即可建置 Laravel 開發環境。即使使用 MySQL、Redis、MailHog 等複雜的開發環境,也可以輕鬆建置。
  3. 輕鬆管理不同版本的專案
    • 例如,Laravel 的版本取決於 PHP 的版本,但透過在 docker-compose.yml 檔案中設定每個專案的環境,可以輕鬆切換版本。

[Laravel vx Docker] Efficiently Set Up a Laravel App Dev Environment with Laravel Sail
當您使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn