應用程式託管會處理一系列複雜的背景工作,簡化應用程式部署作業。本頁說明該工作流程的重要部分,提供根據應用程式需求自訂流程的重點資訊。
架構支援
針對在這些架構中開發的網頁應用程式,應用程式託管提供無須設定所需的建構及部署支援:
- Next.js 13 以上
- Angular 17.2 以上版本
App Managed 會檢查存放區中的 package-lock.json
檔案或其他鎖定檔案,以識別您目前使用的架構。如果您嘗試部署的 Node.js 應用程式缺少鎖定檔案,App Hosting 將無法建構並執行應用程式。您可以在根目錄中執行 npm
install
來建立 package-lock.json
。
App 託管架構轉接器有兩種主要角色:
- 這些程式庫會剖析原始碼和任何架構專用的設定檔 (例如
next.config.js
),以便瞭解應用程式的設定行為。 - 這些資料庫會執行應用程式的建構指令,產生靜態資產並建立用於實際工作環境的最佳化應用程式版本。
架構轉接器會使用 npm run build
建構 Node.js 應用程式,最適合搭配每個架構的預設建構指令碼使用:Next.js 適用的 next build
,以及適用於 Angular 的 ng build
。應用程式託管會嘗試使用自訂建構指令進行建構,但無法保證一定能成功執行。
應用程式託管存放區整合功能的運作方式
GitHub 存放區和應用程式託管後端之間的重要連線是由 Developer Connect 處理,這是 Google Cloud 的外部開發運作工具連線平台。建立 App Hosting 後端時,Developer Connect 的 UI 工作流程會引導您安裝 Firebase GitHub 應用程式。此程序的主要步驟為:
- 您將向 Developer Connect 授予 Secret Manager 管理員角色。這能讓系統以「密鑰」形式安全地儲存在 Cloud Secret Manager 中的「密鑰」。
- 您授權 Firebase GitHub 應用程式存取您的 GitHub 存放區。
- Developer Connect 會將專屬的 GitHub 授權權杖儲存在專案的密鑰管理工具存放區中,請勿修改或刪除這組權杖。
此外,App Hosting 也能與 GitHub 檢查 API 整合,藉此檢查推出作業。這項檢查可讓您在 GitHub 中查看推出作業的狀態,並在部署程序期間偵錯,以免發生任何錯誤。
與 Firebase 和其他 Google 服務整合
應用程式託管會設定您的建構和執行階段環境,方便您使用 Google 應用程式預設憑證初始化 Firebase Admin SDK。這樣一來,您的後端就能在建構及部署期間與其他 Firebase 產品通訊。
App Hosting 後端服務帳戶
在建構期間和執行階段,應用程式代管後端會透過服務帳戶與其他 Google 服務進行驗證。您首次在 Firebase 專案中啟用應用程式託管時,系統會建立用於這些用途的預設服務帳戶:
firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com
根據預設,這個服務帳戶適用於所有後端,且具有一組最低權限,可讓您建構、執行及監控應用程式。此外,它還有權使用應用程式預設憑證驗證 Admin SDK,並執行從 Cloud Firestore 載入資料等作業。請參閱「Firebase 應用程式託管角色」。
如果應用程式需要在建構期間或執行中的後端與額外的 Google 服務互動,您可以藉由新增角色來自訂預設服務帳戶。舉例來說,如果您的應用程式需要 Vertex AI 權限,您可能需要新增 roles/aiplatform.user
或某些相關角色。
重要詞彙與定義
- 後端:App Managed 為建構及執行網頁應用程式而建立的代管資源集合。
- 推出:已上線應用程式的特定版本,連結至 Git 修訂版本。
- 即時分支版本:部署至線上網址的 GitHub 存放區分支版本。通常這是合併功能分支版本或開發分支版本的分支版本。
已知問題和限制
應用程式託管預先發布版功能有一些已知的限制:
- 無論
root\_directory
是透過 Firebase 控制台或 CLI 設定,系統目前不支援含有巢狀package.json
檔案的專案。我們將在日後推出的版本中提供修正方法。 - 目前不支援圖片最佳化功能。
- 在某些情況下,App Managed 後端可能會在應用程式的網址中傳回
Intermittent connection error
訊息。我們將在日後推出的版本中提供修正結果。 - 系統會修改快取標頭,將 CDN 快取限制在 60 秒內;未來如果應用程式代管功能能夠在部署時快速清除快取,這項限制就會解除。
- 未快取的靜態檔案由 Cloud Run 提供;在後續版本中,這些檔案將儲存於 App Hosting 來源並提供,以提高效能。
- 我們將在日後推出的版本中,以自訂網域的形式提供萬用字元子網域。
- Firebase 控制台的後端用量頁面可能未顯示 App 託管 SKU。我們將在後續版本中提供這些功能。
- Firebase 控制台可能會在建立後端時,偶而顯示「找不到建構項目且無效」的錯誤訊息。
- 目前,同一個專案中的所有後端均共用一個 GitHub 機構/帳戶。可連結至該機構/帳戶下的不同存放區。 如要建立連結不同 GitHub 帳戶的後端,請分別將這些帳戶放入不同的專案。
- 目前僅支援
us-central1
區域。