教學課程:Azure Container Apps 中的微服務之間的通訊
如果 已啟用輸入 ,Azure Container Apps 會透過功能變數名稱公開每個容器應用程式。 外部環境中的容器應用程式的輸入端點可以公開存取,或只能供相同 環境中的其他容器應用程式使用。
一旦您知道指定容器應用程式的完整域名之後,您就可以從共享環境中的其他容器應用程式直接呼叫服務。
在本教學課程中,您會部署第二個容器應用程式,對部署程式代碼至 Azure Container Apps 快速入門中部署的 API 進行直接服務呼叫。
下列螢幕快照顯示本文結尾的UI微服務部署至容器應用程式。
在本教學課程中,您將了解:
- 將前端應用程式部署至 Azure Container Apps
- 將前端應用程式連結至上一個快速入門中部署的 API 端點
- 確認前端應用程式可以與後端 API 通訊
必要條件
在雲端程式代碼快速入門中,會部署後端Web API以傳回音樂專輯清單。 如果您未部署專輯 API 微服務,請返回 快速入門:將您的程式代碼部署至 Azure Container Apps 以繼續。
設定
如果您目前已向 Azure 進行驗證,並具有從快速入門中定義的環境變數,請略過下列步驟,並直接移至 準備 GitHub 存放庫。
在您的 Bash 殼層中定義下列變數。
RESOURCE_GROUP="album-containerapps"
LOCATION="canadacentral"
ENVIRONMENT="env-album-containerapps"
API_NAME="album-api"
FRONTEND_NAME="album-ui"
GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"
執行此指令之前,請務必以您的 GitHub 使用者名稱取代 <YOUR_GITHUB_USERNAME>
。
接下來,定義您唯一的容器登錄名稱。
ACR_NAME="acaalbums"$GITHUB_USERNAME
登入 Azure CLI。
az login
az acr login --name $ACR_NAME
準備 GitHub 存放庫
在新的瀏覽器索引標籤中,流覽至 UI 應用程式的 存放庫,然後選取 頁面頂端的 [分支 ] 按鈕,將存放庫分叉至您的帳戶。
請遵循 GitHub 中的提示,將存放庫分叉,並在作業完成之後返回這裡。
瀏覽至程式代碼到雲端資料夾的父系。 如果您仍在 程式代碼到雲端/src 目錄中,您可以使用下列命令返回父資料夾。
cd ../..
使用下列 git 命令,將分支存放庫 複製到程式代碼到 cloud-ui 資料夾:
git clone https://github.com/$GITHUB_USERNAME/containerapps-albumui.git code-to-cloud-ui
注意
clone
如果命令失敗,請檢查您已成功分支存放庫。接下來,將目錄變更為 複製存放庫的 src 資料夾。
cd code-to-cloud-ui/src
建置前端應用程式
az acr build --registry $ACR_NAME --image albumapp-ui .
命令的 az acr build
輸出會顯示原始程式碼上傳至 Azure 的進度,以及作業的詳細 docker build
資料。
下列命令會建置專輯 UI 的容器映像,並以 ACR 登入伺服器的完整名稱標記它。
.
命令結尾的 代表 Docker 建置內容,這表示此命令應該在 Dockerfile 所在的 src 資料夾中執行。docker build --tag "$ACR_NAME.azurecr.io/albumapp-ui" .
將映像推送至您的 ACR 登錄
首先,登入您的 Azure Container Registry。
az acr login --name $ACR_NAME
現在,將映像推送至您的登錄。
docker push "$ACR_NAME.azurecr.io/albumapp-ui"
在容器應用程式之間通訊
在上一個快速入門中,專輯 API 是藉由建立容器應用程式並啟用外部輸入來部署。 將容器應用程式的輸入設定為 外部 ,使其 HTTP 端點 URL 公開可供使用。
現在您可以透過下列步驟,設定前端應用程式來呼叫 API 端點:
- 查詢 API 應用程式以取得其完整功能變數名稱 (FQDN)。
- 將 API FQDN 傳遞至
az containerapp create
作為環境變數,讓 UI 應用程式可以在程式代碼中設定專輯 API 呼叫的基底 URL。
UI 應用程式會使用提供的端點來叫用專輯 API。 下列程式代碼是路由>index.js檔案中使用的程式代碼摘錄。
const api = axios.create({
baseURL: process.env.API_BASE_URL,
params: {},
timeout: process.env.TIMEOUT || 5000,
});
請注意屬性 baseURL
如何從 API_BASE_URL
環境變數取得其值。
執行下列命令來查詢 API 端點位址。
API_BASE_URL=$(az containerapp show --resource-group $RESOURCE_GROUP --name $API_NAME --query properties.configuration.ingress.fqdn -o tsv)
既然您已使用專輯 API 的 FQDN 來設定 API_BASE_URL
變數,您可以將它當做環境變數提供給前端容器應用程式。
部署前端應用程式
使用下列命令建立及部署容器應用程式。
az containerapp create \
--name $FRONTEND_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $ACR_NAME.azurecr.io/albumapp-ui \
--target-port 3000 \
--env-vars API_BASE_URL=https://$API_BASE_URL \
--ingress external \
--registry-server $ACR_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
將 自變數 --env-vars "API_BASE_URL=https://$API_ENDPOINT"
新增至 az containerapp create
,即可為前端應用程式定義環境變數。 使用此語法時,名為 API_BASE_URL
的環境變數會設定為 API 的 FQDN。
命令的 az containerapp create
輸出會顯示前端應用程式的 URL。
檢視網站
使用容器應用程式的 FQDN 來檢視網站。 頁面類似下列螢幕快照。
清除資源
如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組以及本快速入門中建立的所有資源。
警告
此命令會刪除指定的資源群組和其中包含的所有資源。 如果本教學課程範圍以外的資源存在於指定的資源群組中,則也會一併刪除。
az group delete --name $RESOURCE_GROUP
提示
有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。