使用 Azure Pipelines 建置容器映像並將其推送至登錄
Azure DevOps Services
本文會引導您建立管線,以建置 Docker 映射,並將 Docker 映射推送至 Azure Container Registry 或 Docker Hub。
必要條件
產品 | 需求 |
---|---|
Azure DevOps | - Azure DevOps 專案。 - 許可權: - 若要授與專案中所有管線的存取權:您必須是 Project Administrators 群組的成員,。 - 若要建立服務連線:您必須具有 管理員 或 建立者 角色以進行 服務連線。 - 如果您使用自我裝載的代理程式,請確定已安裝 Docker,並使用更高的許可權執行 Docker 引擎。 Microsoft裝載的代理程式已預安裝 Docker。 |
GitHub | - GitHub 帳戶。 - 含有 Dockerfile 的 GitHub 資源庫。 如果您沒有自己的專案,請使用 範例存放庫。 - 一個用於授權 Azure Pipelines 的 GitHub 服務連線。 |
天藍色 | - Azure 訂用帳戶。 - Azure Container Registry。 |
產品 | 需求 |
---|---|
Azure DevOps | - Azure DevOps 專案。 - 許可權: - 若要授與專案中所有管線的存取權:您必須是 Project Administrators 群組的成員,。 - 若要建立服務連線:您必須具有 管理員 或 建立者 角色以進行 服務連線。 - 如果您使用自我裝載的代理程式,請確定已安裝 Docker,並使用更高的許可權執行 Docker 引擎。 Microsoft裝載的代理程式已預安裝 Docker。 |
GitHub | - GitHub 帳戶。 - 含有 Dockerfile 的 GitHub 資源庫。 如果您沒有自己的專案,請使用 範例存放庫。 - 一個用於授權 Azure Pipelines 的 GitHub 服務連線。 |
Docker Hub (英文) | - Docker Hub 帳戶。 - Docker Hub 映像存放庫。 |
建立 Docker 登錄服務連線
將容器映像推送至登錄之前,您必須在 Azure DevOps 中建立服務連線。 此服務聯機會儲存使用容器登錄安全地進行驗證所需的認證。 如需詳細資訊,請參閱 Docker 註冊表服務連線。
在 Azure DevOps 專案中,選取 [項目設定],>[服務連線]。
選取 [新增服務連線] 和 [Docker 登錄]。
選取 [Docker Hub,然後輸入下列資訊:
田 描述 Docker 識別碼 輸入您的 Docker 識別碼。 Docker 密碼 輸入您的 Docker 密碼。 服務連線名稱 輸入服務連線的名稱。 授與所有管線的訪問許可權 選取此選項可授與所有管線的存取權。 選擇 驗證並儲存。
建立管線以建置和推送 Docker 映像
Docker@2工作可用來建置映射,並將映像推送至容器登錄。 Docker@2工作旨在簡化在 Azure Pipelines 內建置、推送和管理 Docker 映射的程式。 此工作支持各種不同的 Docker 命令,包括建置、推送、登入、註銷、啟動、停止及執行。
使用下列步驟建立 YAML 管道,以使用 Docker@2 工作來建置和推送映像檔。
在 Azure DevOps 專案中,選取 [Pipelines],然後 [新增管線]。
選取 [GitHub 作為原始程式碼的位置,然後選取您的存放庫。
- 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
- 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
選取您的存放庫。
選取 [入門管線] 範本以建立基本管線組態。
使用下列程式代碼取代 azure-pipelines.yml 的內容:
trigger: - main pool: vmImage: 'ubuntu-latest' variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker registry service connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
編輯管線 YAML 檔案,如下所示:
- 將取代
<target repository name>
為您要推送映像之容器登錄中的存放庫名稱。 - 以您稍早建立的 Docker 登錄服務連線名稱取代
<docker registry service connection>
。
- 將取代
完成時,請選擇 [儲存並執行>儲存並執行。
選擇 [作業] 來檢視日誌,並確認流程已成功執行。
移至您的 Azure DevOps 專案,然後從左側功能表中選取 [Pipelines]。
選擇「新增管線」。
選取 [GitHub 作為原始程式碼的位置,然後選取您的存放庫。
- 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
- 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
選取 Docker - 建置並且將映像推送至 Azure Container Registry 範本。
選取您的 Azure 訂用帳戶,繼續。
選取您的容器註冊表,然後選取 驗證並設定。
範例 YAML 管線:
# Docker # Build and push an image to Azure Container Registry # https://docs.microsoft.com/azure/devops/pipelines/languages/docker trigger: - main resources: - repo: self variables: # Container registry service connection established during pipeline creation dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de' imageRepository: 'usernamepipelinesjavascriptdocker' containerRegistry: 'repoistoryname.azurecr.io' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build 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)
選取 [儲存並執行],然後再次選取 [儲存並執行]。
選取 [作業],以檢視記錄,並驗證管道已成功執行。
Docker 範本會建立至 Azure Container Registry 的服務連線,並使用 Docker@2 任務來建置 Docker 映像檔,然後將該映像檔推送至註冊表。
Docker@2工作旨在簡化在 Azure Pipelines 內建置、推送和管理 Docker 映射的程式。 此工作支持各種不同的 Docker 命令,包括建置、推送、登入、註銷、啟動、停止及執行。
使用自我裝載代理程式時,請確定 Docker 已安裝在代理程式的主機上,且 Docker 引擎/精靈是以更高的許可權執行。