共用方式為


設定容器映像以執行部署

在本文中,您將瞭解如何建置自定義容器映像,以在 Azure 部署環境 (ADE) 中部署環境定義。

環境定義至少包含兩個檔案:範本檔案,例如azuredeploy.json,以及名為 environment.yaml指令清單檔案。 ADE 會使用容器來部署環境定義,並原生支援 Azure Resource Manager (ARM) 和 Bicep IaC 架構。

ADE 擴充性模型可讓您建立自定義容器映像,以搭配您的環境定義使用。 藉由使用擴充性模型,您可以建立自己的自定義容器映像,並將其儲存在 DockerHub 等容器登錄中。 然後,您可以在環境定義中參考這些映像來部署環境。

ADE 小組提供一系列映射,讓您開始使用,包括核心映射,以及 Azure Resource Manager (ARM)/Bicep 映射。 您可以在 [執行器映射] 資料夾中存取這些範例影像

必要條件

搭配 ADE 使用容器映像

您可以使用下列其中一種方法搭配 ADE 使用容器映像:

  • 使用標準容器映像: 針對簡單案例,請使用 ADE 所提供的標準 Bicep 容器映像。
  • 建立自定義容器映像: 針對更複雜的案例,請建立符合您特定需求的自定義容器映像。

無論您選擇哪種方法,都必須在環境定義中指定容器映像,以部署 Azure 資源。

使用標準映像

ADE 原生支援 Bicep,因此您可以將範本檔案 (azuredeploy.json 和 environment.yaml) 新增至目錄,以設定環境定義,以部署環境的 Azure 資源。 ADE 接著會使用標準 Bicep 容器映像來建立部署環境。

在 environment.yaml 檔案中,執行器屬性會指定您想要使用的容器映像位置。 若要使用 Microsoft 成品登錄 上發佈的範例映像,請使用下表所列的個別標識符執行器。

下列範例顯示參考範例 Bicep 容器映像的執行器:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

您可以在 ARM-Bicep 映射的 [執行器-Images] 資料夾下的 ADE 範例存放庫中看到標準 Bicep 容器映像。

如需有關如何建立使用 ADE 容器映射來部署 Azure 資源的環境定義的詳細資訊,請參閱 新增和設定環境定義

建立自訂容器映像

建立自訂容器映像可讓您自定義部署以符合您的需求。 您可以根據 ADE 標準容器映像建立自訂映像。

完成映像自定義之後,您必須建置映像,並將其推送至容器登錄。

使用 Docker 建立和自訂容器映像

在此範例中,您會了解如何建置 Docker 映像以利用 ADE 部署並存取 ADE CLI,使其中一個 ADE 撰寫的映像成為您映像的基礎。

ADE CLI 是一種工具,可讓您使用 ADE 基底映射來建置自定義映像。 您可以使用 ADE CLI 來自定義您的部署和刪除,以符合您的工作流程。 ADE CLI 會預先安裝在範例映像上。 若要深入了解 ADE CLI,請參閱 CLI 自訂執行器映像參考 (部分機器翻譯)。

若要建立針對 ADE 設定的映像,請遵循下列步驟:

  1. 使用FROM語句,以 ADE 撰寫的範例影像或您選擇的影像為基礎。
  2. 使用 RUN 語句為您的映像安裝任何必要的套件。
  3. 與 Dockerfile 相同的層級建立腳本 資料夾、儲存 您的 deploy.shdelete.sh 檔案,並確保這些腳本可在您建立的容器內探索和可執行檔。 部署必須使用 ADE 核心映像執行此步驟。

使用 FROM 陳述式選取範例容器映像

若要建置 Docker 映射來利用 ADE 部署並存取 ADE CLI,您應該以其中一個 ADE 撰寫的映像為基礎。 在為新映像建立的 DockerFile 中包含 FROM 語句,指向裝載於 Microsoft 成品登錄 上的 ADE 撰寫範例映像。 使用 ADE 撰寫的映射時,您應該將自訂映像以 ADE 核心映像為基礎。

以下是參考範例核心映像的範例 FROM 陳述式:

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

此陳述式會提取最近發佈的核心映像,並使它成為自訂映像的基礎。

在映像中安裝套件

您可以使用 RUN 語句來安裝套件與 Azure CLI,如下列範例所示:

RUN az bicep install

ADE 範例映像是以 Azure CLI 映像為基礎,並預先安裝 ADE CLI 和 JQ 封裝。 您可以深入了解 Azure CLI (部份機器翻譯) 和 JQ 封裝 (英文)。

若要在映像中安裝您需要的更多套件,請使用 RUN 陳述式。

執行作業殼層指令碼

在範例映像中,會根據作業名稱來決定和執行作業。 目前,支援的兩個作業名稱為 deploydelete

若要設定自訂映像以利用此結構,請在名為 scripts 的 Dockerfile 層級指定一個資料夾,然後指定 deploy.shdelete.sh 這兩個檔案。部署殼層指令碼會在建立或重新部署環境時執行,而刪除殼層指令碼會在刪除環境時執行。 您可以在執行器-Images 資料夾映像下的存放庫中查看殼層腳本的範例。

若要確保這些殼層指令碼可執行,請將下列幾行新增至您的 Dockerfile:

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

讓 ADE 能夠存取自訂映像

您必須建置 Docker 映射,並將其推送至容器登錄,使其可用於 ADE。 您可以使用 Docker CLI 或 ADE 提供的腳本來建置映像。

選取適當的索引標籤,以深入瞭解每個方法。

在建置要推送至登錄的映像之前,請確定電腦上已安裝 Docker 引擎。 然後,瀏覽至 Dockerfile 的目錄,並執行下列命令:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

例如,若您要將映像儲存在名為 customImage 之登錄內的存放庫下,並以標記版本 1.0.0 上傳,您會執行:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

將映像推送至登錄

若要使用自訂映像,您必須設定可公開存取的映像登錄,並啟用匿名映像提取。 如此一來,Azure 部署環境就可以存取您的自訂映像,以在我們的容器中執行。

Azure Container Registry 是儲存容器映像和類似成品的 Azure 供應項目。

若要建立登錄 (可透過 Azure CLI、Azure 入口網站、PowerShell 命令等方式完成),請遵循其中一個快速入門

若要設定登錄以啟用匿名映像提取,請在 Azure CLI 中執行下列命令:

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

當您準備好將映像推送至登錄時,請執行下列命令:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

將映像連線到您的環境定義

製作環境定義以在部署中使用您的自訂映像時,請在資訊清單檔 (environment.yaml 或 manifest.yaml) 上編輯 runner 屬性。

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

存取作業記錄和錯誤詳細資料

ADE 會將失敗部署的錯誤詳細資料儲存在 容器內的 $ADE_ERROR_LOG 檔案中。

針對失敗的部署進行疑難排解:

  1. 登入開發人員入口網站

  2. 識別無法部署的環境,然後選取 [查看詳細資料]

    螢幕擷取畫面顯示失敗之部署的錯誤詳細資料,特別是不正確的儲存體帳戶名稱。

  3. 檢閱 [錯誤詳細資料] 區段中的錯誤詳細資料。

    螢幕擷取畫面顯示失敗的環境部署,其中顯示 [查看詳細資料] 按鈕。

此外,您可以使用 Azure CLI 以利用下列命令來檢視環境的錯誤詳細資料:

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

若要檢視環境部署或刪除的作業記錄,請使用 Azure CLI 擷取環境的最新作業,然後檢視該作業識別碼的記錄。

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}