Table of Contents
前言
在開發多個 Laravel 專案時,有效管理開發環境很重要,Laradock 是一個優秀的工具,可以幫助我們快速搭建和管理多個 Laravel 專案的開發環境。在這篇文章中,我將帶您逐步了解如何使用 Laradock 搭建和管理多個 Laravel 專案。
環境要求
- 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 專案使用的服務有
- nginx
- PostgreSQL
- 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/
如果你想要讓他連接到 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