使用 Laradock 建立多個 Laravel 專案

前言

在開發多個 Laravel 專案時,有效管理開發環境很重要,Laradock 是一個優秀的工具,可以幫助我們快速搭建和管理多個 Laravel 專案的開發環境。在這篇文章中,我將帶您逐步了解如何使用 Laradock 搭建和管理多個 Laravel 專案。

https://laradock.io/

環境要求

- Git
- Docker [ >= 19.03.0 ]

Laradock 是一個基於 Docker 的 PHP 開發環境工具,所以必須要了解Docker 操作起來比較不會那麼困難,建議如果是初學者學習 laravel 而已,可以先用laravel 內建的 php artisan serve ,Laradock它提供了一個包含了 PHP、Nginx、Postgresql、MySQL、Redis 等常用服務的 Docker Image,通過 Laradock,我們可以輕鬆地建立和管理 Laravel 專案所需的開發環境,而不用擔心環境配置的問題。

此篇文章會分享如何使用laradock 建立多個laravel 專案使用的服務有

  1. nginx
  2. PostgreSQL
  3. PgAdmin

步驟

會先建立一個部laravel 的開發環境,然後再依照步驟 從 設定 Nginx Config 重複做一次即可建立第二個laravel 專案,以後只有開啟 laradock 這兩個專案都會運行,因為蠻常發生 A專案打B專案之類的情況,所以這樣用我認為比較方便

安裝 Laradock

電腦必須安裝 Docker,就可以使用 Laradock 來建立和管理 Laravel 專案的開發環境了。

git clone https://github.com/laradock/laradock.git
cd laradock
cp env-example .env

資料夾結構預計這樣放,laradock 就是 clone 下來的程式,www 就是我們的laravel 應用程式,預計會建立兩個 laravel 專案

├── laradock
└── www
    ├── local-www.project-1.com
    └── local-www.project-2.com

修改專案放置的位置,修改 laradock 資料夾資料夾根目錄 .env 中的路徑,表示laravel 專案放在,上一層的 www 資料夾

APP_CODE_PATH_HOST=../www

接著我們來確認一下一些設定,因為有可能下載的跟我的不相同,所以可以先了解一下你clone 下來的 laradock 的相關參數, PHP版本,在寫這一篇文章時是8.3

PHP_VERSION=8.3

確認 PostgreSQL 資訊,他是一個資料庫,平常可能比較常聽到MySQL

### POSTGRES ##############################################

POSTGRES_VERSION=alpine
POSTGRES_CLIENT_VERSION=15
POSTGRES_DB=default
POSTGRES_USER=default
POSTGRES_PASSWORD=secret
POSTGRES_PORT=5432
POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d

確認 pgadmin 預設變數,他是PostgreSQL資料庫的圖形化介面,可以讓我們操作資料庫,就跟MySQL的 phpmyadmin 差不多的意思,有一個介面可以讓你操作資料庫。

### pgadmin ##################################################
# use this address http://ip6-localhost:5050
PGADMIN_PORT=5050
PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD=admin

設定 Nginx Config

在laradock 資料夾中,執行以下指令把預設的範例檔複製成一個新的,在同一個路徑下叫做 project-1.test.conf 通常會設定網域名稱local 要顯示的網域名稱。

cp -r nginx/sites/laravel.conf.example nginx/sites/local-www.project-1.com.conf

編輯剛剛建立的 nginx/sites/local-www.project-1.com.conf 檔案

vim nginx/sites/local-www.project-1.com.conf

找到以下文字

server_name laravel.test;

修改成我們第一個專案的網域

server_name local-www.project-1.com;

修改裡面的設定找到以下文字

root /var/www/laravel/public;

修改 第一個專案是在www資料夾的哪一個位置。

root /var/www/local-www.project-1.com/public;

主要就是調整下圖紅框處

啟動 Docker Image

docker-compose up -d nginx postgres pgadmin

啟動以後可以用 pgadmin 圖形化介面(http://localhost:5050) 來建立資料庫,可以參考我之前的文章使用它來建立資料庫,資料庫名稱要記住,等等再設定laravel 專案的環境變數時會用到。建立資料庫、建立資料表

創建 Laravel 專案

在laradock 資料夾中,執行以下指令進入到 workspace 容器

docker-compose exec workspace bash

這個容器的根目錄就是對應到我們電腦中的www資料夾,所以我們直接在 www 資料夾中下指令,產生 laravel 初始需要的檔案

composer create-project laravel/laravel —prefer-dist local-www.project-1.com

執行這一個指令會下載laravel 初始化檔案,如果你是laravel 11 連資料庫都會用 SQLite 這樣的方式建立資料庫,等等連DB 連線設定都不用,就可以看到laravel 官網。

├── laradock
└── www
    ├── local-www.project-1.com (我們在建立這一個laravel 專案資料夾)
    └── local-www.project-2.com

更新 hosts 文件

在本地開發環境中使用自定義域名,需要在 hosts 文件中添加一條記錄來對應名稱到local主機。

在 Windows 中,編輯 C:\Windows\System32\drivers\etc\hosts 文件。在 macOS 和 Linux 中,編輯 /etc/hosts文件,通常需要管理員權限,不然只有只能讀取檔案。

sudo vim /etc/hosts

加入一行

127.0.0.1 local-www.project-1.com

開啟瀏覽器就可以看到專案了

http://local-www.project-1.com/

laravel 11 預設

如果你想要讓他連接到 PostgreSQL 在 www/local-www.project-1.com 資料夾中的 .env 檔案

修改laravel 專案連接的環境變數

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=db_name
DB_USERNAME=default
DB_PASSWORD=secret

回到 laradock 資料夾,進入容器

docker-compose exec workspace bash

在容器中,進入第一個專案中,並且執行 migrate 指令,如果你設定正確,就可以順利讓 這一個 laravel 連結到 資料庫。

cd local-www.project-1.com
php artisan migrate

重複步驟建立第二個laravel 專案

看到預設的laravel畫面,表示使用 laradock 建立一個開發環境網站,你已經成功了,接著回到 設定 Nginx Config 這個步驟開始建立第二個 laravel 專案。

基本上看到 local-www.project-1.com 都改成 local-www.project-2.com 試試看吧!

都完成以後,可以在laradock 的資料夾中,先down (停止 container 並且刪除 container),然後再重新開啟 剛剛有用到的指令。

docker-compose down
docker-compose up -d nginx postgres pgAdmin
Victor
Victor

哈囉!

文章: 226

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *