在 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 網路伺服器的根網頁使用。