您不須再去下載任何軟體及套件,僅需建置此開發環境即可開始開發您的 Laravel 專案。
建置 Laravel 10 + Nodejs v18 環境的 dockerfile
- PHP 8.1
- Laravel 10
- Composer
- Node v18
- PostgreSQL
為了避免各工程師在本地電腦開發時發生套件版本衝突問題,以及避免本地與正式環境差異造成程式碼預期外錯誤,故設計此 Docker 建置專案來協助各位在本地建立雲端輔導平台專案的開發環境。
Docker 是一個讓開發者不須去各產品公司下載套件與語言包,只需輸入一行指令便能自動生產開發環境系統的工具,若您想更了解 Docker,可於此閱讀官方文件,或是閱讀此入門文章。
以下說明該如何使用此專案
在此 Docker 專案中,我們已為你提供了以下的開發工具:
- PHP 8.1
- Node v18
- PostgreSQL
- PGAdmin
- Nginx
- Laravel 10
請依照以下步驟操作進行環境建置:
若您是 win10, win11 用戶
- 安裝 wsl,並升級至 version 2
$ wsl.exe --install $ wsl.exe --set-default-version 2 $ wsl.exe --update # 請注意由於 windows 版本變動過於快速,此指令可能往後不再生效,得尋找其他指令來安裝 WSL # 若有任何安裝不順,還請以微軟官方教學文件為主
- 請至官網安裝 Docker,並重新開機
- 注意,若您的作業系統版本過舊 (win7, win8, win10 家用版),您無法使用 WSL
- 使用 Git clone
$ git clone <this-project-address>
- 建立 Image
$ docker-compose build --build-arg DB_NAME=<db-name-you-want>
- 執行 docker-compose 運行容器 (Container)
$ docker-compose up -d
- 如果不加上
-d
,可以看到正在執行的 log,但 terminal 會變得無法控制 -d
是讓 docker 在背景執行的意思
- 如果不加上
- 進入到容器系統中
$ docker exec -it laravel-10 /bin/ash
exec
: 表示要對容器下命令-it
: 表示要與容器互動,通常搭配/bin/bash
一起用laravel-10
: 容器的名稱,這是我自取的。輸入$ docker ps
可以看所有容器的名稱/bin/ash
: 若想透過終端跟容器互動,我們需要 Almquist Shell (類似 bash 的東西);輸入此訊息表示開始使用
- 安裝依賴套件
composer install # 安裝後端依賴套件
npm ci # 安裝前端依賴套件
- 確認一下有沒有安裝成功、版本是否正確
$ php -v # 若顯示 php 7.4 訊息表示成功 $ node -v # 若顯示 node v16 訊息表示成功 $ composer -v $ php artisan list # 若顯示 Laravel 8 訊息表示成功
- 生成 .env 檔
$ cp .env.example .env
- 生成專案金鑰
$ php artisan key:generate $ php artisan jwt:secret # 如果有用 JWT
- 建立資料庫與資料
php artisan migrate
- 匯入假資料
# pgsql 容器只能接收 /pgsql/data 裡面的檔案,為了匯入假資料,需要把假資料檔放進此資料夾 # 1. 你現在會在根目錄看到 /pgsql/data 資料夾,以及 db_backup.sql 備份檔 (如果有人準備了假資料) # 2. 請複製 db_backup.sql 到 /pgsql/data (用指令或手動複製皆可) # 剛剛我們在 laravel 容器底下,現在要移動到 pgsql 容器底下 $ exit $ docker exec -it pgsql /bin/bash $ pgsql -U postgres lara-db < db_backup.sql
- 打開瀏覽器,輸入網址 http://localhost:8005/ 打開 pgadmin
- 輸入帳號密碼 (寫在 docker-compose 裡)
- 對著左邊的 Servers 按下右鍵 > Register > Server
- Name: server;
- Connention > Host name: pgsql; user:
postgres
; password: 0000 > 創建
- 進入 src 資料夾中
$ code src
- 現在,你可以專注開發這份專案了
- 打開瀏覽器,輸入網址
localhost:8001
確認網站是否部署成功- 因為我設定 nginx port 是
8001
,所以才需要輸入 8001 - nginx 會自動幫我們對應 port 到 Application Server 的 port
- 因為我設定 nginx port 是
$ docker exec -it nginx /bin/sh
- 這只是開發用 docker,請不要拿去正式部署 (因為有很多環境變數是直接 hardcode 在 docker 設定檔內)
- 應該還有很多 Bug 待處理,請求後續維護
- 在此環境建置中使用了 8001, 5432, 8005, 9000 PORT,請確認你的電腦沒有網站佔用這些 PORT,否則會有衝突
- 為了讓它跑得快一點,使用了 alpine 作業系統,
apt
參數無法使用,請使用apk
專案是參考上述教學建立的,若中途有建置錯誤可看影片除錯。