亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 后端開發(fā) php教程 【Laravel vx Docker】利用 Laravel Sail 高效搭建 Laravel 應用開發(fā)環(huán)境

【Laravel vx Docker】利用 Laravel Sail 高效搭建 Laravel 應用開發(fā)環(huán)境

Oct 23, 2024 am 08:07 AM

關于 Laravel Sail

Laravel Sail 是 Laravel 框架的官方開發(fā)環(huán)境。 Sail 提供了一個輕量級的命令行界面 (CLI),可以使用 Docker 輕松設置和管理 Laravel 應用程序開發(fā)環(huán)境。下面,我們講解一下 Laravel Sail 的主要特性和使用方法。

使用 Laravel Sail 的好處

  1. 構建獨立于操作系統的開發(fā)環(huán)境
    • Sail 使用 Docker 來容器化 Laravel 應用程序的開發(fā)環(huán)境。這使您可以構建獨立于操作系統的開發(fā)環(huán)境。
  2. 輕松設置開發(fā)環(huán)境
    • 使用 Sail,只需幾條命令即可搭建 Laravel 開發(fā)環(huán)境。即使使用 MySQL、Redis、MailHog 等復雜的開發(fā)環(huán)境,也可以輕松構建。
  3. 輕松管理不同版本的項目
    • 例如,Laravel 的版本取決于 PHP 的版本,但通過在 docker-compose.yml 文件中設置每個項目的環(huán)境,可以輕松切換版本。

[Laravel vx Docker] Efficiently Set Up a Laravel App Dev Environment with Laravel Sail
當您使用 Docker 和 Laravel Sail 創(chuàng)建項目時,結構將如上圖所示。

用法

開發(fā)環(huán)境

  • Mac
  • PHP v8.3
  • Laravel v11
  • Docker

先決條件

在創(chuàng)建 Laravel 項目之前,請下載并啟動 Docker Desktop。
https://www.docker.com/products/docker-desktop/

1. 創(chuàng)建 Laravel 項目

運行以下命令創(chuàng)建一個新的 Laravel 項目并設置 Laravel Sail。

curl -s "https://laravel.build/example-app" | bash
cd example-app

這將創(chuàng)建 Laravel 項目文件。生成的 docker-compose.yml 文件中描述了開發(fā)環(huán)境。

使用 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執(zhí)行各種開發(fā)任務。以下是一些示例。

  • 啟動應用程序
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. 改變服務

即使在創(chuàng)建項目后,您也可以通過修改 docker-compose.yml 文件(即 Docker 配置文件)來更改服務。在這里,我們將更改 PHP 版本和使用的數據庫。

更改 PHP 版本

首先檢查當前PHP版本

sail down

接下來修改docker-compose.yml文件中描述的開發(fā)環(huán)境信息。

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 創(chuàng)建的項目更改為 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

這樣,即使創(chuàng)建了項目,也可以從 MySQL 更改為 PostgreSQL。

結論

通過本文,您將了解如何使用 Laravel Sail 高效地設置和管理開發(fā)環(huán)境。通過根據項目的需求選擇合適的服務并自定義設置,您可以實現更靈活、更強大的開發(fā)環(huán)境。

以上是【Laravel vx Docker】利用 Laravel Sail 高效搭建 Laravel 應用開發(fā)環(huán)境的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何將兩個PHP陣列組合獨特的值? 如何將兩個PHP陣列組合獨特的值? Jul 02, 2025 pm 05:18 PM

要合并兩個PHP數組并保留唯一值,有兩種主要方法。1.對于索引數組或僅需值去重的情況,使用array_merge和array_unique組合:先用array_merge($array1,$array2)合并數組,再用array_unique()去重,最終得到包含所有唯一值的新數組;2.對于關聯數組且希望保留第一個數組中的鍵值對時,使用 運算符:$result=$array1 $array2,這將確保第一個數組中的鍵不會被第二個數組覆蓋。這兩種方法分別適用于不同場景,根據是否需要保留鍵名或只關注

PHP正則密碼強度 PHP正則密碼強度 Jul 03, 2025 am 10:33 AM

判斷密碼強度需結合正則與邏輯處理,基礎要求包括:1.長度不少于8位;2.至少含小寫字母、大寫字母、數字;3.可加入特殊字符限制;進階方面需避免連續(xù)重復字符及遞增/遞減序列,這需PHP函數檢測;同時應引入黑名單過濾常見弱密碼如password、123456;最終建議結合zxcvbn庫提升評估精度。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控制文件名與路徑、設置服務器限制并二次處理媒體文件。1.驗證上傳來源通過token防止CSRF并通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串并根據檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數據。

PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數內部無法訪問全局變量,需使用global關鍵字或參數傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數需通過use關鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯誤并提升代碼穩(wěn)定性。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP注釋的關鍵在于明確目的與規(guī)范,注釋應解釋“為什么”而非“做了什么”,避免冗余或過于簡單。1.使用統一格式,如docblock(/*/)用于類、方法說明,提升可讀性與工具兼容性;2.強調邏輯背后的原因,如說明為何需手動輸出JS跳轉;3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便于后續(xù)追蹤與協作。好的注釋能降低溝通成本,提升代碼維護效率。

發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

如何在PHP中創(chuàng)建數組? 如何在PHP中創(chuàng)建數組? Jul 02, 2025 pm 05:01 PM

在PHP中創(chuàng)建數組的方法有兩種:使用array()函數或使用中括號[]。1.使用array()函數是傳統方式,兼容性好,定義索引數組如$fruits=array("apple","banana","orange"),關聯數組如$user=array("name"=>"John","age"=>25);2.使用[]是從PHP5.4開始支持的更簡潔的方式,如$color

See all articles