跳至主要内容

環境配置

說明開發、測試與生產環境的差異,以及各環境的啟動與部署方式。

環境總覽

項目開發環境測試/生產環境
執行位置本地電腦Java Application Server (Tomcat)
原始碼無(已封裝)
啟動方式npm run dev / ./gradlew bootRunWAR 部署
MSW 預設啟用停用

軟體需求

開發環境

組件版本需求說明
Java21+後端執行與建置
Gradle8.x專案已包含 Gradle Wrapper
Node.js22.x前端執行與建置
npm10.x套件管理
DatabaseH2(內建)開發環境預設,無需額外安裝

測試/生產環境

組件版本需求說明
Java21+執行 WAR
Tomcat10.1+Java Application Server
Node.js22.x建置用(CI/CD 環境)
DatabaseMySQL 8.0+ / PostgreSQL 15+ / SQL Server 2012+擇一
Memory至少 2GB RAM建議 4GB 以上
Storage至少 10GB視資料量調整
建置與執行分離

測試/生產環境的伺服器只需要 Java 和 Tomcat。Node.js 僅在 CI/CD 建置階段需要,執行階段不需要。

開發環境

在本地電腦直接執行,具有原始程式碼:

# 前端
cd app-web && npm run dev # http://localhost:3000
cd app-web-mockup && npm run dev # http://localhost:3001

# 後端
cd app-server && ./gradlew bootRun # http://localhost:8080/app-server

開發環境下,MSW 自動啟用,無需額外配置。

測試/生產環境

所有模組以 WAR 封裝,部署至 Tomcat:

┌─────────────────────────────────────────────────┐
│ Tomcat │
│ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ app-web.war │ │ app-server.war│ │
│ └───────────────┘ └───────────────┘ │
│ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │app-web-mockup │ │ app-docs.war │ │
│ │ .war │ │ │ │
│ └───────────────┘ └───────────────┘ │
└─────────────────────────────────────────────────┘

WAR 封裝關係

前端模組透過托管層專案封裝成 WAR:

前端模組托管層專案WAR 產出
app-webapp-web-hostapp-web.war
app-web-mockup(相同技術)app-web-mockup.war
app-docsapp-docs-hostapp-docs.war

建置指令

# app-web.war
cd app-web-host && ./gradlew build
# 產出:build/libs/app-web-*.war

# app-docs.war
cd app-docs-host && ./gradlew build
# 產出:build/libs/app-docs-*.war

MSW 配置

MSW(Mock Service Worker)用於攔截 API 請求並返回 Mock 資料,適用於前端獨立開發、Demo 展示或後端 API 尚未實作的情境。

設計原則

  • 封裝後預設停用:避免生產環境意外啟用 Mock API
  • 程式碼一致性:app-web-mockup 與 app-web 共用相同邏輯
  • 明確啟用:需要時透過配置明確啟用

各環境 MSW 狀態

環境app-webapp-web-mockup說明
開發 (npm run dev)啟用啟用自動啟用
測試/生產 (WAR)停用停用需明確啟用

測試環境啟用 MSW

在外部配置檔案中啟用:

${app.home}/conf/app-web.yaml

app:
msw:
enabled: true
環境變數覆蓋

也可透過環境變數覆蓋:APP_MSW_ENABLED=true

使用情境

情境MSW後端說明
前端獨立開發啟用不需要無需後端即可開發
前後端整合測試停用需要測試真實 API
Demo 展示啟用不需要快速展示功能
生產環境停用需要使用真實 API

相關資源