使用 Docker YAML 建置 Docker 映射並將其推送至 Azure Container Registry
Azure DevOps Services
本教學課程說明如何使用以 Azure Pipelines Docker 範本為基礎的管線來建置容器化應用程式,並將其推送至 Azure Container Registry。 範本會設定持續整合 YAML 管線,其中新的程式代碼存放庫變更會觸發管線,以建置和發佈更新的 Docker 映像至登錄。
Docker 容器範本管線會使用Microsoft裝載的代理程式,並建立與 Azure Container Registry 的服務主體型服務連線。 如需使用自我裝載代理程式和您自行建立的服務連線來執行類似程式的管線,請參閱 建置 Docker 映像並將其推送至 Azure Container Registry。
必要條件
您有權建立和設定資源的 Azure 帳戶。 如果您沒有 Azure 帳戶, 請註冊免費帳戶。
您有權建立管線和部署應用程式的 Azure DevOps 組織和專案。 若要建立組織或專案,請參閱在 Azure DevOps 中建立新的組織或建立專案。
GitHub 帳戶。
重要
當您在下列程式中使用 GitHub 時,可能會提示您建立 GitHub 服務連線、登入 GitHub、向 GitHub 組織驗證、安裝 Azure Pipelines 或授權 Azure Pipelines。 請遵循畫面上的指示來完成此程式。 如需詳細資訊,請參閱 存取 GitHub 存放庫。
取得範例應用程式
在 GitHub 中 ,分支或複製範例 Docker 和 Kubernetes Node.JS應用程式 存放庫。
建立容器登錄
從 Azure 入口網站,選取頂端功能表欄中的圖示,以登入 Azure Cloud Shell。 請務必使用 Bash 殼層。
在 Cloud Shell 中,執行下列命令,以使用 Azure CLI 建立資源群組和 Azure 容器登錄。 Container Registry 名稱必須是小寫。
az group create --name myapp-rg --location eastus az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
若要將 Docker 映射部署至 Azure 容器登錄,您必須為預設停用的登錄啟用系統管理員用戶帳戶。 若要啟用登錄的系統管理員使用者,請使用
--admin-enabled
參數搭配az acr update
命令。 如需詳細資訊和指示,請參閱 系統管理員帳戶。az acr update -n <acrName> --admin-enabled true
或者,您可以使用 Azure 入口網站 UI 來建立 Azure 容器登錄。 如需指示,請參閱 建立容器登錄。 在您建立登錄之後,請在 [屬性] 中啟用系統管理員帳戶。
建立管線
在您的 Azure DevOps 專案中,選取 [管線>][新增管線],如果此管線是專案中的第一個管線,請選取 [建立管線]。
選取 [GitHub ] 作為原始程式碼的位置。
在 [ 選取存放庫 ] 畫面上,選取您的範例程序代碼存放庫。
在 [ 設定管線] 畫面上 ,選取 [Docker:建置] 並將映射推送至 Azure Container Registry 管線。
在 Docker 畫面上,選取您的 Azure 訂用帳戶,然後選取 [ 繼續]。
從下拉功能表中選取您的容器登錄、提供映像名稱,然後選取 [驗證並設定]。
Azure Pipelines 會產生定義 管線的azure-pipelines.yml 檔案。
檢閱azure-pipelines.yml中的程式碼,然後選取 [儲存並執行]。
選擇性地編輯認可 訊息 並提供描述。 然後選取 [ 儲存並再次執行 ], 將azure-pipelines.yml 檔案認可到您的存放庫,然後啟動組建。
組建執行頁面會顯示組建詳細數據和進度。 若要監看管線的運作情形,請選取 [作業] 底下的 [建置]。
管線詳細數據
管線是從 Docker 容器範本產生。 建置階段會使用 Docker v2 工作 來建置 Docker 映射,並將 Docker 映射推送至容器登錄。
Docker 工作會使用 Docker 登錄服務與 服務主體驗證的連線,讓您的管線將映射推送至容器登錄。 Docker 容器範本會在建立管線時產生此服務連線。
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
清除資源
當您完成本教學課程中建立的資源時,您可以將其刪除,以避免產生進一步的費用。 執行下列 Cloud Shell 命令來刪除您的資源群組及其內的所有資源。
az group delete --name myapp-rg