App Hosting 會處理一系列複雜的背景工作,以簡化應用程式的部署作業。本頁說明該工作流程的重要部分,並提供您可能想根據應用程式需求自訂流程的資訊。
架構整合
App Hosting 為使用下列架構開發的網頁應用程式提供預先設定的建構和部署支援:
- Next.js 13 以上
- Angular 17.2 以上版本
App Hosting 會檢查存放區中的 package-lock.json
檔案或其他鎖定檔案,找出您使用的架構。如果您嘗試部署缺少鎖定檔案的 Node.js 應用程式,App Hosting 將無法建構及執行應用程式。您可以透過在根目錄中執行 npm
install
來建立 package-lock.json
。
架構轉接器
App Hosting 架構轉接器有兩個主要角色:
- 這些工具會剖析您的原始碼和任何特定架構的設定檔 (例如
next.config.js
),並產生可由其他應用程式代管基礎架構處理的輸出套件。 - 這些指令會執行應用程式的建構指令,產生靜態資產,並建立正式版應用程式的最佳化版本。
架構轉接程式會使用 npm run build
建構 Node.js 應用程式,並與各個架構的預設建構指令碼搭配使用,例如 Next.js 的 next build
和 Angular 的 ng build
。App Hosting 會嘗試使用自訂建構指令進行建構,但無法保證一定能成功。
Next.js 和 Angular 轉接程式的來源可在 firebase-framework-tools 中取得。
其他架構
除了 Nextjs 和 Angular,應用程式代管服務也支援任何能夠提供符合輸出套件規格的建構輸出內容的網路架構。架構作者可以利用輸出套件規格,確保應用程式代管服務支援其架構。
如果您想支援其他架構,可以建立轉接器,或與架構維護者聯絡,將建構輸出內容轉換為應用程式代管格式。Nextjs 和 Angular 轉接程式是建立轉接程式的絕佳參考範例。
如要瞭解支援的架構,請參閱 Firebase 開放原始碼。
App Hosting 存放區整合功能的運作方式
Developer Connect 是 Google Cloud 的外部 DevOps 工具連線平台,負責處理 GitHub 存放區和 App Hosting 後端之間的重要連結。在建立 App Hosting 後端時,Developer Connect 的 UI 工作流程會引導您安裝 Firebase GitHub 應用程式。這個程序的重要步驟如下:
- 您授予 Developer Connect Secret Manager 管理員角色。這樣一來,系統就能將憑證安全地儲存為「密鑰」至 Cloud Secret Manager。
- 您授權 Firebase GitHub 應用程式存取 GitHub 存放區。
- Developer Connect 會在專案的 Secret Manager 存放區中儲存專屬的 GitHub 授權權杖,請勿修改或刪除這組權杖。
此外,App Hosting 會整合 GitHub 檢查 API,提供推出版本的檢查功能。這項檢查可讓您在 GitHub 中查看推行狀態,並在發生錯誤時偵錯部署程序。
與 Firebase 和其他 Google 服務整合
App Hosting 會設定建構和執行階段環境,讓您可以使用 Google 應用程式預設憑證初始化 Firebase Admin SDK。這樣一來,後端就能在建構和部署期間與其他 Firebase 產品通訊。
App Hosting 個位置
App Hosting 部署作業會在特定位置建立後端資源。這種彈性的網頁應用程式位置有幾項重要優點:
- 將資料放在距離使用者較近的地理位置,藉此提升效能並縮短延遲時間。
- 某個區域的 App Hosting 發生重大故障,不會影響在其他區域部署的 Web 應用程式。
您可以在控制台或 Firebase CLI 中建立 App Hosting 後端時,選擇下列任一區域:
us-central1
(愛荷華州)asia-east1
(台灣)europe-west4
(荷蘭)
App Hosting 後端服務帳戶
在建構和執行階段期間,App Hosting 後端會使用服務帳戶驗證其他 Google 服務。系統會在您首次在 Firebase 專案中啟用 App Hosting 時,為這些用途建立預設服務帳戶:
firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com
這個服務帳戶預設會套用至所有後端,並具備最少的權限,讓您建構、執行及監控應用程式。此外,這個帳戶也具備使用應用程式預設憑證驗證 Admin SDK的權限,可執行從 Cloud Firestore 載入資料等作業。請參閱 Firebase App Hosting 角色。
如果應用程式需要在建構期間或從執行中的後端與其他 Google 服務互動,您可以新增角色來自訂預設服務帳戶。舉例來說,如果應用程式需要 Vertex AI 權限,您可能需要新增 roles/aiplatform.user
或某些相關角色。
重要詞彙和定義
- 後端:App Hosting 建立用於建構及執行網頁應用程式的管理資源集合。
- 推出:已連結至 Git 提交內容的實際應用程式特定版本。
- 正式版分支:GitHub 存放區的分支,會部署至正式版網址。通常是指將功能分支或開發分支合併的子集。
已知問題和限制
App Hosting 預覽版有一些已知的限制:
- 在某些情況下,App Hosting 後端可能會在應用程式的網址中傳回
Intermittent connection error
訊息。我們將在後續版本中提供修正項目。 - 我們已修改 Cache-Control 標頭,將 CDN 快取時間限制在 60 秒;未來當 App Hosting 能夠在部署時快速清除快取時,這項限制就會解除。
- 根據預設,圖片最佳化作業會在 Cloud Run 中執行,且不會保留已最佳化的圖片。建議您在有更佳解決方案前,先停用圖片最佳化功能,或手動指定載入器。
- 未快取的靜態檔案會由 Cloud Run 提供;在後續版本中,這些檔案會從 App Hosting 來源儲存及提供,以提升效能。
- App Hosting SKU 可能不會顯示在 Firebase 控制台的後端用量頁面中。我們將在後續版本中提供這些功能。
- Firebase 主控台在建立後端時,可能會間歇性顯示「找不到並且無效的版本」錯誤。
- 目前,同一個專案中的所有後端都會共用一個 GitHub 機構/帳戶。這些檔案可連結至該機構/帳戶下的不同存放區。如要建立與不同 GitHub 帳戶連結的後端,請將這些後端放入不同的專案。
- Next.js 中介軟體、重寫和重新導向會在 CDN 後方的 Cloud Run 中執行。由於這些指令不會保護快取的回應,請務必為要轉譯的內容設定適當的控制指示語。