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

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

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

Oct 23, 2024 am 08:07 AM

關(guān)于 Laravel Sail

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

使用 Laravel Sail 的好處

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

[Laravel vx Docker] Efficiently Set Up a Laravel App Dev Environment with Laravel Sail
當(dāng)您使用 Docker 和 Laravel Sail 創(chuàng)建項(xiàng)目時(shí),結(jié)構(gòu)將如上圖所示。

用法

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

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

先決條件

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

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

運(yùn)行以下命令創(chuàng)建一個(gè)新的 Laravel 項(xiàng)目并設(shè)置 Laravel Sail。

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

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

使用 with 查詢指定服務(wù)

如果要指定PHP版本或者使用PostgreSQL而不是MySQL,可以在生成項(xiàng)目時(shí)在命令中用=,,...指定

curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash

2. 起航

移動(dòng)到項(xiàng)目目錄并啟動(dòng) Sail。

./vendor/bin/sail up -d

此命令啟動(dòng) Docker 容器并運(yùn)行 Laravel 應(yīng)用程序。

※注冊(cè)別名

輸入 ./vendor/bin/sail 很麻煩,因此請(qǐng)將其保存為 shell 配置文件中的別名 sail。

使用以下命令檢查您正在使用的 shell 的路徑

echo $SHELL

示例:/bin/zsh

編輯 Shell 配置文件

  • 對(duì)于 zsh

Shell 配置文件是 ~/.zshrc。
要添加別名,請(qǐng)運(yùn)行以下命令

curl -s "https://laravel.build/example-app" | bash
cd example-app
  • 對(duì)于 bash

shell 配置文件是 ~/.bash_profile 或 ~/.bashrc。
要添加別名,請(qǐng)運(yùn)行以下命令:

curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash

通過上述設(shè)置,您可以以縮寫形式運(yùn)行 sail 命令。

./vendor/bin/sail up -d

3. 使用 Sail 命令

您可以使用Sail執(zhí)行各種開發(fā)任務(wù)。以下是一些示例。

  • 啟動(dòng)應(yīng)用程序
echo $SHELL
  • 停止應(yīng)用程序
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc
source ~/.zshrc
  • 運(yùn)行 Artisan 命令
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile
source ~/.bash_profile
  • 運(yùn)行 Composer 命令
sail up -d
  • 運(yùn)行 npm 命令
sail up -d

4. 改變服務(wù)

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

更改 PHP 版本

首先檢查當(dāng)前PHP版本

sail down

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

sail artisan migrate

將構(gòu)建上下文和鏡像更改為 8.1 .

sail composer install

修改 docker-compose.yml 后,停止應(yīng)用。

sail npm install

接下來,重建 Docker 容器以反映更改。

sail php -v
PHP 8.3.12 (cli) (built: Sep 27 2024 03:53:05) (NTS)

重新啟動(dòng)應(yīng)用程序。

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。

更改使用的數(shù)據(jù)庫

將使用 MySQL 創(chuàng)建的項(xiàng)目更改為 PostgreSQL。

運(yùn)行 Sail 安裝命令

sail down

選擇 pgsql

sail build --no-cache

檢查 docker-compose.yml 文件并確認(rèn) pgsql 條目已添加。

sail up -d

ext,打開項(xiàng)目目錄下的.env文件,確認(rèn)設(shè)置了DB_CONNECTION=pgsql和DB_HOST=pgsql。
如果沒有,請(qǐng)手動(dòng)更改它們。

sail php -v
PHP 8.1.30 (cli) (built: Sep 27 2024 04:07:29) (NTS)

確認(rèn) docker-compose.yml 和 .env 中的更改后,停止應(yīng)用程序。

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.

重新啟動(dòng)應(yīng)用程序。

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

運(yùn)行遷移文件。

DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=******

在 Docker 中啟動(dòng) shell 并檢查 pgsql

顯示當(dāng)前正在運(yùn)行的 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

檢查應(yīng)用程序的容器名稱并在 Docker 內(nèi)啟動(dòng)應(yīng)用程序的 bash。

./vendor/bin/sail up -d

連接到 pgsql。

echo $SHELL

系統(tǒng)將提示您輸入密碼,因此請(qǐng)輸入 .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)建了項(xiàng)目,也可以從 MySQL 更改為 PostgreSQL。

結(jié)論

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

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

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

人工智能驅(qū)動(dòng)投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

如何檢查電子郵件地址在PHP中是否有效? 如何檢查電子郵件地址在PHP中是否有效? Sep 21, 2025 am 04:07 AM

usefilter_var()

MySQL條件聚合:使用CASE語句實(shí)現(xiàn)字段的條件求和與計(jì)數(shù) MySQL條件聚合:使用CASE語句實(shí)現(xiàn)字段的條件求和與計(jì)數(shù) Sep 16, 2025 pm 02:39 PM

本文深入探討了在MySQL中如何利用CASE語句進(jìn)行條件聚合,以實(shí)現(xiàn)對(duì)特定字段的條件求和及計(jì)數(shù)。通過一個(gè)實(shí)際的預(yù)訂系統(tǒng)案例,演示了如何根據(jù)記錄狀態(tài)(如“已結(jié)束”、“已取消”)動(dòng)態(tài)計(jì)算總時(shí)長和事件數(shù)量,從而克服傳統(tǒng)SUM函數(shù)無法滿足復(fù)雜條件聚合需求的局限性。教程詳細(xì)解析了CASE語句在SUM函數(shù)中的應(yīng)用,并強(qiáng)調(diào)了COALESCE在處理LEFT JOIN可能產(chǎn)生的NULL值時(shí)的重要性。

如何在PHP中制作對(duì)象的深度副本或克??? 如何在PHP中制作對(duì)象的深度副本或克隆? Sep 21, 2025 am 12:30 AM

useunSerialize(serialize($ obj))fordeepcopyingwhenalldataiSerializable;否則,exhiment__clone()tomanallyDuplicateNestedObjectedObjectSandAvoidSharedReference。

如何合并PHP中的兩個(gè)陣列? 如何合并PHP中的兩個(gè)陣列? Sep 21, 2025 am 12:26 AM

usearray_merge()tocombinearrays,oftritingDupritingDuplicateStringKeySandReIndexingNumericKeys; forsimplerconcatenation,尤其是innphp5.6,usethesplatoperator [... $ array1,... $ array2]。

如何在PHP項(xiàng)目中使用名稱空間? 如何在PHP項(xiàng)目中使用名稱空間? Sep 21, 2025 am 01:28 AM

NamespacesinPHPorganizecodeandpreventnamingconflictsbygroupingclasses,interfaces,functions,andconstantsunderaspecificname.2.Defineanamespaceusingthenamespacekeywordatthetopofafile,followedbythenamespacename,suchasApp\Controllers.3.Usetheusekeywordtoi

如何使用PHP更新數(shù)據(jù)庫中的記錄? 如何使用PHP更新數(shù)據(jù)庫中的記錄? Sep 21, 2025 am 04:47 AM

toupdateadatabaseRecordInphp,firstConnectusingpDoormySqli,thenusepreparedStatementStoExecuteAsecuteAsecuresqurupDatequery.example.example:$ pdo = newpdo(“ mySql:mysql:host = localHost; localhost; localhost; dbname; dbname = your_database = your_database',yous_database',$ username,$ username,$ squeaste;

PHP中的魔術(shù)方法是什么,并提供了'__call()和`__get()'的示例。 PHP中的魔術(shù)方法是什么,并提供了'__call()和`__get()'的示例。 Sep 20, 2025 am 12:50 AM

__call()methodistred prightedwhenaninAccessibleOrundEfinedMethodiscalledonAnaBject,允許customhandlingByAcceptingTheMethodNameAndarguments,AsshoheNpallingNengallingUndEfineDmethodSlikesayHello()

如何在PHP中獲取文件擴(kuò)展名? 如何在PHP中獲取文件擴(kuò)展名? Sep 20, 2025 am 05:11 AM

usepathinfo($ fileName,pathinfo_extension)togetThefileextension; itreliablyhandlesmandlesmultipledotsAndEdgecases,返回theextension(例如,“ pdf”)oranemptystringifnoneexists。

See all articles