共用方式為


將 Go Web 應用程式部署至 Azure Container Apps

在本快速入門中,您將瞭解如何將容器化的 Go Web 應用程式部署至 Azure Container Apps。

Azure Container Apps 可讓您執行封裝在任何容器中的應用程式程序代碼,而不需要管理複雜的雲端基礎結構或複雜的容器協調器,也不必擔心運行時間或程序設計模型。 Azure Container Apps 的常見用法包括:部署 API 端點、裝載背景處理應用程式、處理事件驅動處理,以及執行微服務。

遵循本教學課程,逐步解說建置 Docker 映像、將該映射部署至 Azure Container Registry,以及將 Go Web 應用程式部署至 Azure Container Apps。

必要條件

  • Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

設定

若要從 CLI 登入 Azure,請執行 az login 命令,並遵循提示來完成驗證程式。

az login

若要確保您執行最新版的 CLI,請執行 az upgrade 命令。

az upgrade

接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。

如果您在 Azure CLI 中執行 az containerapp 命令時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure Container Apps 擴充功能。

az extension add --name containerapp --upgrade

注意

從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true 安裝容器應用程式延伸模組。

az extension add --name containerapp --upgrade --allow-preview true

現在已安裝目前的延伸模組或模組,請註冊 Microsoft.AppMicrosoft.OperationalInsights 命名空間。

注意

Azure 容器應用程式資源已從 Microsoft.Web 命名空間移轉至 Microsoft.App 命名空間。 如需詳細資訊,請參閱 2022 年 3 月將命名空間從 Microsoft.Web 移轉至 Microsoft.App

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

下載範例應用程式

若要遵循本教學課程,您需要範例應用程式才能容器化。 msdocs-go-webapp-quickstart GitHub 存放庫中會提供範例 Go Web 應用程式。 將應用程式範例下載或複製到本機工作站。

git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git

cd msdocs-go-webapp-quickstart

建立 Azure Container Registry

Azure Container Registry 可讓您建置、儲存及管理容器映射。 您將使用它來儲存 Docker 映像,其中包含先前所述的範例存放庫中提供的範例 Go Web 應用程式。

執行下列命令來建立 Azure Container Registry:

  1. 使用 az group create 命令來建立 Azure 資源群組。

    
    
    az group create \
        --name <resourceGroupName> \
        --location eastus
    
  2. 使用 az acr create 命令建立 Azure Container Registry。

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic
    
  3. 使用 az acr login 命令登入 Azure 容器實例。

    az acr login --name <azureContainerRegistryName>  
    

<resourceGroupName><azureContainerRegistryName> 取代為適當的值。 您的 Azure Container Registry 名稱必須是全域唯一的。

注意

如果您在執行 az acr login 命令時收到類似下列的錯誤,請確定 docker deamon 正在您的系統上執行:

You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR

建置和推送 Docker 映射

建立 Azure Container Registry 之後,請建置並推送範例 Go Web 應用程式的 Docker 映像。

執行下列命令建置並將映像推送至登錄:

  1. 使用 az acr show 命令取得登入伺服器資訊。

    az acr show \
        --name <azureContainerRegistryName> \
        --resource-group <resourceGroupName> \
        --query loginServer \
        --output tsv  
    
  2. 在本機建置 Docker 映像。

    docker build -t <loginServer>/<imageName>:latest .
    
  3. 將 Docker 映像推送至 Azure Container Registry。

    docker push <loginServer>/<imageName>:latest
    
  4. 使用 az acr repository list 命令,確認映射已成功推送至 Azure Container Registry。

    az acr repository list \
        --name <azureContainerRegistryName> \
        --output table
    

loginServerimageNameazureContainerRegistryName 替換為適當的值。 映射名稱是推送至 Azure Container Registry 的 Docker 映射,稍後用來部署至 Azure Container Apps。

既然您已在 Azure Container Registry 中取得映像,即可部署 Azure Container App 及其環境。

建立容器應用程式環境

Azure Container Apps 沒有容器協調器的複雜性,但仍需要一些方法來建立安全界限,也就是 Azure Container Apps 環境所在的位置。 部署在相同環境中的容器應用程式會共用相同的虛擬網路,並將記錄寫入相同的Log Analytics工作區。 您必須先部署環境,才能部署 Azure 容器應用程式。

  • 執行 az containerapp env create 命令來建立 Azure Container Apps 環境。

    az containerapp env create \
        --name <containerAppEnvName> \
        --resource-group <resourceGroupName> \
        --location "East US"
    

部署至 Azure 容器應用程式

此時,您已建立 Azure Container Registry、建置 Docker 映射並將其推送至其中,並建立 Azure Container Apps 環境。 剩下的就是部署應用程式。

執行 az containerapp create 命令,將 Go Web 應用程式部署至 Azure Container Apps。

az containerapp create \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --environment <containerAppEnvName> \
    --image "<loginServer>/<imageName>:latest" \
    --registry-server "<loginServer>" \
    --registry-identity system \
    --target-port 8080 \
    --ingress external

參數 --registry-identity system 會設定容器應用程式上的系統指派 受控識別 。 容器應用程式會使用此身分識別,而不是較不安全的使用者名稱/密碼,以向容器登錄進行驗證。 此命令也會自動為身分識別建立 AcrPull 角色 指派,使其有權從登錄提取映像。 若要使用受控識別進行驗證和授權,登錄必須是 Azure Container Registry。

確認 Web 應用程式 URL

執行 az containerapp show 命令,以取得 Web 應用程式輸入的 FQDN (完整功能變數名稱)。

APP_FQDN=$(az containerapp show \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

接下來,對 FQDN 執行 curl 命令,並確認輸出會反映網站的 HTML。

curl "https://$APP_FQDN"

清除資源

當您完成範例應用程式時,您可以從 Azure 移除應用程式的所有資源。 這樣做可避免持續產生費用,並讓您的 Azure 訂用帳戶保持不整整。 移除資源群組也會移除該資源群組中的所有資源,而且是移除應用程式所有 Azure 資源最快的方式。

執行 az group delete 命令來刪除資源群組及其資源。

az group delete \
    --name <resourceGroupName> \
    --no-wait

下一步