如何建立及部署 Node.js 應用程式

建構 Node.js 應用程式只是軟體開發生命週期的第一步;要確保應用程式在正式環境中可存取、高效能且具備韌性,才是應用程式推送的關鍵。部署現代化網頁應用程式時,必須根據流量特性、生命週期階段和資源預算,選擇適合的架構。

無論是要推出 AI 輔助的全端原型,還是部署正式環境等級的後端服務,現代雲端環境都提供自動化和容器化兩種途徑。本指南將說明 Node.js 網頁架構的核心概念、重要的部署考量事項,並逐步引導您使用免費方案的額度,在代管基礎架構上建立及部署 Node.js 應用程式。

什麼是 Node.js 執行階段?

Node.js 是一個開放原始碼、跨平台 JavaScript 執行階段環境,以 Chrome V8 JavaScript 引擎為基礎建構而成。它讓 JavaScript 在網路瀏覽器以外的伺服器端執行,使工程師使用單一程式設計語言,編寫統一的全端程式碼集。

傳統的多執行緒網路伺服器會為每個並行連線產生獨立的作業系統執行緒,Node.js 與之不同,採用事件導向、單一執行緒、非阻塞 I/O 模型。這種架構讓 Node.js 更加輕量且高效,能處理數千個並行連線,例如 RESTful API、即時訊息、串流服務和 AI 代理自動化調度管理程式。

傳統 Node.js 部署與無伺服器容器平台的比較

準備部署 Node.js 後端時,選擇合適的運算環境會直接影響維護負擔、擴充速度和成本效益。

功能

虛擬機器 (IaaS/VPS)

PaaS/buildpack 託管

現代化無伺服器容器

基礎建設管理

手動修補 OS、管理防火牆及更新執行階段

全代管平台層,具有廠商執行階段鎖定

全代管基礎架構;不需管理 OS

資源調度機制

依據指標自動調度 VM 資源 (需要幾分鐘才能啟動執行個體)

依執行個體數量或工作站限制自動調度資源

根據要求即時自動調度資源,包括將資源調度率降至零

封裝格式

原始來源檔案、systemd 服務或 PM2 程序管理工具

Git 推送存放區整合功能,搭配自動化建構套件。

標準 OCI/Docker 容器映像檔

閒置成本

無論傳入的 HTTP 流量為何,一律全天候計費

通常需支付最低基本執行個體費用。

在要求執行期間嚴格按秒計費

可攜性

可攜性高,但環境漂移風險高

可攜性低;受限於平台慣例

可攜性高;可在任何環境中執行相同的容器

功能

虛擬機器 (IaaS/VPS)

PaaS/buildpack 託管

現代化無伺服器容器

基礎建設管理

手動修補 OS、管理防火牆及更新執行階段

全代管平台層,具有廠商執行階段鎖定

全代管基礎架構;不需管理 OS

資源調度機制

依據指標自動調度 VM 資源 (需要幾分鐘才能啟動執行個體)

依執行個體數量或工作站限制自動調度資源

根據要求即時自動調度資源,包括將資源調度率降至零

封裝格式

原始來源檔案、systemd 服務或 PM2 程序管理工具

Git 推送存放區整合功能,搭配自動化建構套件。

標準 OCI/Docker 容器映像檔

閒置成本

無論傳入的 HTTP 流量為何,一律全天候計費

通常需支付最低基本執行個體費用。

在要求執行期間嚴格按秒計費

可攜性

可攜性高,但環境漂移風險高

可攜性低;受限於平台慣例

可攜性高;可在任何環境中執行相同的容器

建立 Node.js 應用程式時的重要考量

如要開發可部署於正式環境的 Node.js 應用程式,必須解決架構模式問題,避免瓶頸並確保運作時間:

  • 無狀態應用程式狀態:現代無伺服器平台會根據傳入流量,動態啟動和關閉容器執行個體。請避免將使用者工作階段狀態、上傳的媒體檔案或背景佇列儲存在本機容器記憶體或本機磁碟路徑中,因為重新部署或縮減資源時,寫入暫存容器磁碟的檔案會消失。請使用 Cloud Firestore、 PostgreSQL 適用的 Cloud SQL 或 Cloud Storage 等專屬代管服務,儲存永久狀態。
  • 環境變數與密鑰隔離:將 API 金鑰、資料庫憑證或密鑰硬式編碼至原始碼控管系統,會造成重大安全漏洞。請一律將執行階段設定與程式碼分離,使用環境變數 (process.env),並在容器執行階段層級安全地插入這些設定。
  • 通訊埠繫結與健康狀態探測:無伺服器容器環境會插入預設目標通訊埠 (例如 PORT 環境變數,通常是通訊埠 8080),藉此轉送 HTTP 流量。Node.js 伺服器必須動態監聽 process.env.PORT || 8080,才能通過健康狀態和就緒檢查。
  • 正常關機與信號攔截:Node.js 應用程式應攔截 SIGTERM 和 SIGINT 作業系統信號。當基礎架構自動配置器啟動縮減作業時,妥善處理這些信號可確保現有的 HTTP 要求完成處理,再關閉資料庫連線並終止容器。

如何建立及部署 Node.js 應用程式

您可以透過兩種主要工作流程建立及部署 Node.js 應用程式:快速 AI 輔助原型設計 (不需本機設定),或標準容器式部署 (適用於現有程式碼集)。

途徑 A:快速設計原型,例如 AI Studio 建構模式和入門級 (免費佈建)

如要快速建立原型及 AI 應用程式,開發人員可使用 Google AI Studio 建構模式,以自然語言描述全端 Node.js 架構,並部署至 Cloud Run,不必使用本機指令列工具或強制設定帳單。

步驟 1:在建構模式中初始化應用程式

  1. 前往 Google AI Studio,切換至「建構模式」。
  2. 輸入應用程式提示詞,說明所需的商業邏輯和前端介面 (例如「使用 Node.js 後端和永久性工作管理功能,建構庫存追蹤資訊主頁」)。
  3. 整合式代理會生成應用程式檔案、設定伺服器路徑、安裝相關 npm 依附元件,並啟動互動式預覽。

步驟 2:設定內建資料和驗證

  • 永久儲存空間:如果提示詞需要資料儲存空間,請啟用 Cloud Firestore 或 PostgreSQL 適用的 Cloud SQL (開發人員版本)。AI Studio 會自動草擬結構定義、模型和用戶端連線檔案。
  • 使用者身分:切換 Firebase 驗證,即可啟用預先設定的 Google 登入流程,不必手動設定個別 OAuth 重新導向處理常式。

步驟 3:發布至代管 Cloud Run

  1. 在上方介面中,依序點選「發布」>「開始使用」>「發布應用程式」。
  2. 選取偏好的部署區域。
  3. 為應用程式提供自訂 <user-defined>.ai.studio 網址,然後發布。
  4. 這個平台會封裝容器、佈建基礎運算資源,並在幾秒內提供有效的 <user-defined>.ai.studio HTTPS 正式環境網址。

途徑 B:部署自訂 Node.js 應用程式,例如 Docker 和 Cloud Run

如為現有程式碼集和自訂微服務,請將 Node.js 應用程式封裝至符合 OCI 規範的容器,並直接部署至 Cloud Run。

步驟 1:建構 Node.js 伺服器程式碼

使用 Express、Fastify 或標準 Node.js 程式庫 (index.js) 建立最小的 HTTP 伺服器:

  • JavaScript
載入中…

 注意:Cloud Run 會在執行階段自動插入 PORT 環境變數。上述程式碼中的 || 8080 備用值,主要是方便在部署前於本機機器進行測試。

步驟 2:建立安全的多級式 Dockerfile

使用多級式建構封裝應用程式,確保正式環境映像檔最小且安全。

最佳做法:在根目錄中建立 .dockerignore 檔案,並在其中加入 node_modules 和 .env。這可確保本機開發檔案不會意外封裝到容器映像檔中,保持映像檔乾淨安全。

在根目錄中建立名為 Dockerfile 的檔案:

  • Dockerfile
載入中…

步驟 3:部署至 Cloud Run

從本機根資料夾使用 Google Cloud CLI 執行部署作業。您也可以視需要為應用程式建立自訂網址,格式為 <使用者定義>.cloud.run:

  • Bash
載入中…

之後如要對應自訂網域,請使用:

  • Bash
載入中…

免費方案和入門級的定價機制

瞭解免付費配額的運作方式,可確保您能以可預測的方式,建立 Node.js 應用程式的原型並擴充:

級別類型

運算與資源額度

需求/限制

Google Cloud 入門級 (原型設計)

• Cloud Run:最多兩個使用中的網頁應用程式

• Cloud Firestore:1 GiB 儲存空間、每天 5 萬次讀取、每天 4 萬次寫入

• Cloud SQL:PostgreSQL 開發人員版本 (可將資源調度率降至零)

• Firebase 驗證:包含 Google 登入

• 有效的 Google 帳戶

• 無須提供信用卡或帳單帳戶

• 鎖定單一部署區域

標準 Google Cloud 免費方案 (標準帳戶)

• Cloud Run:每月 200 萬次要求、每月 180,000 vCPU-秒、每月 360,000 GiB-秒、每月 1 GB 北美網路輸出

• 獲得價值 $300 美元的迎新抵免額,可在前 90 天內使用



• 連結的 Cloud Billing 帳戶

• 完整平台 API 存取權,適用於所有區域

級別類型

運算與資源額度

需求/限制

Google Cloud 入門級 (原型設計)

• Cloud Run:最多兩個使用中的網頁應用程式

• Cloud Firestore:1 GiB 儲存空間、每天 5 萬次讀取、每天 4 萬次寫入

• Cloud SQL:PostgreSQL 開發人員版本 (可將資源調度率降至零)

• Firebase 驗證:包含 Google 登入

• 有效的 Google 帳戶

• 無須提供信用卡或帳單帳戶

• 鎖定單一部署區域

標準 Google Cloud 免費方案 (標準帳戶)

• Cloud Run:每月 200 萬次要求、每月 180,000 vCPU-秒、每月 360,000 GiB-秒、每月 1 GB 北美網路輸出

• 獲得價值 $300 美元的迎新抵免額,可在前 90 天內使用



• 連結的 Cloud Billing 帳戶

• 完整平台 API 存取權,適用於所有區域

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。
與 Google Cloud 銷售專員聯絡,深入探討您面臨的特殊難題。

在無伺服器環境中執行 Node.js 的最佳做法

  1. 以精簡依附元件最佳化冷啟動:移除未使用的開發套件 (npm prune --production),並使用現代模組搖樹器 (例如 esbuild 或 tsup) 組合伺服器程式碼,以縮減映像檔大小並加快容器初始化速度。
  2. 設定執行個體數量上限:從沙箱環境移至實際工作環境專案時,請指定並行門檻並設定 --max-instances (例如 --max-instances 5),確保流量意外激增時不會超出目標營運預算。
  3. 以結構化方式保留記錄:使用結構化 JSON 格式,將記錄串流至 stdout 和 stderr。代管記錄系統會自動剖析 JSON 物件,讓您依 HTTP 狀態碼、嚴重性等級和執行延遲時間篩選。
  4. 使用原生健康狀態檢查:實作明確的 HTTP 端點探測 (例如 /healthz),先驗證下游資料庫連線能力,再向傳入的轉送 Proxy 發出就緒信號。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。