分享方式:


使用 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 註冊表服務連線

  1. 在 Azure DevOps 專案中,選取 [項目設定],>[服務連線]

    專案設定選擇的螢幕截圖。

  2. 選取 [新增服務連線][Docker 登錄]

    Docker 登錄選取項目的螢幕快照。

  3. 選取 [Docker Hub,然後輸入下列資訊:

    描述
    Docker 識別碼 輸入您的 Docker 識別碼。
    Docker 密碼 輸入您的 Docker 密碼。
    服務連線名稱 輸入服務連線的名稱。
    授與所有管線的訪問許可權 選取此選項可授與所有管線的存取權。

    Docker Hub 服務連線對話框的螢幕快照。

  4. 選擇 驗證並儲存

建立管線以建置和推送 Docker 映像

Docker@2工作可用來建置映射,並將映像推送至容器登錄。 Docker@2工作旨在簡化在 Azure Pipelines 內建置、推送和管理 Docker 映射的程式。 此工作支持各種不同的 Docker 命令,包括建置、推送、登入、註銷、啟動、停止及執行。

使用下列步驟建立 YAML 管道,以使用 Docker@2 工作來建置和推送映像檔。

  1. 在 Azure DevOps 專案中,選取 [Pipelines],然後 [新增管線]

  2. 選取 [GitHub 作為原始程式碼的位置,然後選取您的存放庫。

    • 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
    • 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
  3. 選取您的存放庫。

  4. 選取 [入門管線] 範本以建立基本管線組態。

  5. 使用下列程式代碼取代 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'
    
    
  6. 編輯管線 YAML 檔案,如下所示:

    • 將取代 <target repository name> 為您要推送映像之容器登錄中的存放庫名稱。
    • 以您稍早建立的 Docker 登錄服務連線名稱取代 <docker registry service connection>
  7. 完成時,請選擇 [儲存並執行>儲存並執行

  8. 選擇 [作業] 來檢視日誌,並確認流程已成功執行。

  1. 移至您的 Azure DevOps 專案,然後從左側功能表中選取 [Pipelines]。

  2. 選擇「新增管線」

  3. 選取 [GitHub 作為原始程式碼的位置,然後選取您的存放庫。

    • 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
    • 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
  4. 選取 Docker - 建置並且將映像推送至 Azure Container Registry 範本。

  5. 選取您的 Azure 訂用帳戶,繼續

  6. 選取您的容器註冊表,然後選取 驗證並設定

    範例 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)
    
    
  7. 選取 [儲存並執行],然後再次選取 [儲存並執行]

  8. 選取 [作業],以檢視記錄,並驗證管道已成功執行。

Docker 範本會建立至 Azure Container Registry 的服務連線,並使用 Docker@2 任務來建置 Docker 映像檔,然後將該映像檔推送至註冊表。

Docker@2工作旨在簡化在 Azure Pipelines 內建置、推送和管理 Docker 映射的程式。 此工作支持各種不同的 Docker 命令,包括建置、推送、登入、註銷、啟動、停止及執行。

使用自我裝載代理程式時,請確定 Docker 已安裝在代理程式的主機上,且 Docker 引擎/精靈是以更高的許可權執行。