在 App Engine 彈性環境中建立自訂執行階段應用程式
區域 ID
REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
自訂執行階段可讓您建構應用程式,在 Dockerfile 定義的環境中執行。透過 Dockerfile,您可以使用不屬於Google Cloud 的語言和套件,也可以使用與 App Engine 彈性環境所用的相同資源與工具。
在這個快速入門導覽課程中,您可以使用自訂執行階段,將 nginx 網路伺服器啟動至 App Engine。
事前準備
在這個快速入門導覽課程中執行範例應用程式之前,您需要為 App Engine 設定環境,並建立新的 Google Cloud 專案:
使用 Google Cloud 控制台建立新 Google Cloud 專案:
下載並安裝 Google Cloud CLI,然後初始化 gcloud CLI:
執行下列
gcloud指令建立 App Engine 應用程式,並指定您要執行應用程式的地理區域:gcloud app create- 由於新專案中 Cloud Build 使用服務帳戶的預設行為有所變更,以及預設安全機構政策異動,您可能需要將額外角色授予部署服務帳戶。如要進一步瞭解如何授予特定角色,請參閱疑難排解指南。
App Engine 位置
App Engine 具有「地區性」,這表示執行應用程式的基礎架構位於特定地區,且由 Google 代管,可為該地區內的所有區域提供備援功能。
選擇應用程式的執行地區時,請將您在延遲時間、可用性和耐用性方面的要求,做為主要考量。一般來說,您可以選擇距離您應用程式使用者最近的地區,但您也應該考量 App Engine 的適用地區,以及應用程式使用的其他Google Cloud 產品和服務的位置。如果跨多個位置使用服務,可能會影響應用程式的延遲時間和定價。
應用程式的地區設定完成後即無法更改。
如果您已建立 App Engine 應用程式,可以透過下列方式查看其所在區域:
請執行
gcloud app describe指令。在 Google Cloud 控制台中開啟 App Engine 資訊主頁。該區域會顯示在頁面頂端附近。
下載 Hello World 應用程式
選擇下列其中一項操作,將 Hello World 範例應用程式從 GitHub 下載到本機電腦:
從下列存放區複製 Hello World 範例應用程式:
git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples下載 zip 格式的範例,然後將該檔案解壓縮至本機目錄。
前往程式碼範例所在的
nginx目錄,例如:cd appengine-custom-runtimes-samples/nginx
在本機電腦上執行 Hello World
您可以下載並安裝 Docker,然後在本機電腦上執行 Hello World 容器,來測試範例應用程式。
這裡沒有 App Engine 的特定步驟,因此,您可以使用偏好的工具與方法測試範例應用程式。
將 Hello World 部署至 App Engine
準備將範例應用程式部署至 App Engine 時,請執行下列步驟:
從
app.yaml和Dockerfile所在的目錄,執行下列指令:gcloud app deploy瞭解選用標記。
如要查看在
https://PROJECT_ID.REGION_ID.r.appspot.com執行的應用程式,請執行下列指令,啟動瀏覽器:gcloud app browse
常見的 gcloud 指令標記
- 加上
--version標記以指定專門用來辨識您應用程式版本的 ID。如未指定,將由系統自動產生,例如:--version [YOUR_VERSION_ID] -
加上
--project標記以指定替代 Google Cloud 專案 ID,而不使用您在gcloud工具中初始化為預設值的 ID。示例:--project [YOUR_PROJECT_ID]
範例:
gcloud app deploy --version pre-prod-5 --project my-sample-app
如要進一步瞭解如何透過指令列部署應用程式,請參閱測試及部署您的應用程式。如需所有指令標記的清單,請參閱 gcloud app deploy 參考資料。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
如要進一步瞭解 Dockerfile,請參閱 Dockerfile 參考資料。
要瞭解如何建立自己的自訂執行階段,請參閱建構自訂執行階段一文。
審查程式碼
Hello World 可能是最簡單的 App Engine 應用程式,因為它會建立單一容器,僅執行一個服務與一個版本。本節將詳細說明每個應用程式檔案。
app.yaml指定應用程式的設定。
app.yaml檔案必須與Dockerfile檔案位於同一目錄中。runtime: custom項目會告知 App Engine 尋找將會定義執行階段映像檔的Dockerfile,而env: flex會表明您正在部署至彈性環境。詳情請參閱
app.yaml參考資料。Dockerfile定義一組操作說明,用來為範例應用程式的容器建立 Docker 映像檔。
Dockerfile檔案必須與app.yaml檔案位於同一目錄中。這個Dockerfile會安裝 nginx 網路伺服器,並複製一些基本設定:FROM 指令會使用 nginx 網路伺服器的官方 Docker 映像檔建構基本映像檔。
如果使用這個
Dockerfile,您的容器映像檔會將 nginx 與所有內容包含在應用程式的www/目錄中。
Hello World 範例應用程式也包含 nginx.conf 檔案,其中含有基本的 nginx 設定資訊,以及 index.html 檔案,可做為 nginx 網路伺服器的根網頁使用。