다음을 통해 공유


Docker YAML을 사용하여 Docker 이미지를 빌드하고 Azure Container Registry에 푸시

Azure DevOps Services

이 자습서에서는 Azure Pipelines Docker 템플릿을 기반으로 하는 파이프라인을 사용하여 컨테이너화된 애플리케이션을 빌드하고 Azure Container Registry에 푸시하는 방법을 보여 줍니다. 템플릿은 새 코드 리포지토리 변경으로 인해 업데이트된 Docker 이미지를 빌드하고 레지스트리에 게시하는 파이프라인을 트리거하는 연속 통합 YAML 파이프라인을 설정합니다.

Docker 컨테이너 템플릿 파이프라인은 Microsoft 호스팅 에이전트를 사용하고 Azure Container Registry에 대한 서비스 주체 기반 서비스 연결을 만듭니다. 자체 호스팅 에이전트 및 직접 만든 서비스 연결을 사용하여 유사한 프로세스를 수행하는 파이프라인은 Docker 이미지 빌드 및 Azure Container Registry 푸시를 참조 하세요.

필수 조건

  • 리소스를 만들고 구성할 수 있는 권한이 있는 Azure 계정입니다. Azure 계정이 없는 경우 체험 계정에 등록합니다.

  • 파이프라인을 만들고 앱을 배포할 수 있는 권한이 있는 Azure DevOps 조직 및 프로젝트입니다. 조직 또는 프로젝트를 만들려면 새 조직 만들기 또는 Azure DevOps에서 프로젝트 만들기를 참조하세요.

  • GitHub 계정.

    Important

    다음 절차에서 GitHub를 사용하는 경우 GitHub 서비스 연결을 만들거나, GitHub에 로그인하거나, GitHub 조직에 인증하거나, Azure Pipelines를 설치하거나, Azure Pipelines에 권한을 부여하라는 메시지가 표시될 수 있습니다. 화면의 지침에 따라 프로세스를 완료합니다. 자세한 내용은 GitHub 리포지토리에 대한 액세스를 참조 하세요.

샘플 앱 가져오기

GitHub에서 샘플 Docker 및 Kubernetes Node.JS 앱 리포지토리를 포크하거나 복제합니다.

컨테이너 레지스트리 만들기

  1. Azure Portal에서 위쪽 메뉴 모음에서 아이콘을 선택하여 Azure Cloud Shell에 로그인합니다. Bash 셸을 사용해야 합니다.

    Azure Cloud Shell 단추

  2. 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
    
  3. Azure Container Registry에 Docker 이미지를 배포하려면 레지스트리에 대한 관리자 사용자 계정을 사용하도록 설정해야 합니다. 이 계정은 기본적으로 사용하지 않도록 설정되어 있습니다. 레지스트리에 대해 관리자 사용자를 사용하도록 설정하려면 명령과 --admin-enabled 함께 매개 변수를 az acr update 사용합니다. 자세한 내용 및 지침은 관리자 계정을 참조 하세요.

    az acr update -n <acrName> --admin-enabled true
    

또는 Azure Portal UI를 사용하여 Azure 컨테이너 레지스트리를 만들 수 있습니다. 자세한 내용은 컨테이너 레지스트리 만들기를 참조 하세요. 레지스트리를 만든 후 속성에서 관리자 계정을 사용하도록 설정합니다.

파이프라인 만들기

  1. Azure DevOps 프로젝트에서 파이프라인 새 파이프라인을>선택하거나, 이 파이프라인이 프로젝트의 첫 번째 파이프라인인 경우 파이프라인 만들기를 선택합니다.

    새 파이프라인 만들기 화면을 보여 주는 스크린샷

  2. 소스 코드의 위치로 GitHub를 선택합니다.

  3. 리포지토리 선택 화면에서 샘플 코드 리포지토리를 선택합니다.

  4. 파이프라인 구성 화면에서 Docker: 이미지를 빌드하고 Azure Container Registry 파이프라인에 푸시합니다.

    Azure Container Registry 파이프라인 선택 영역에 Docker 이미지 빌드 및 푸시를 보여 주는 스크린샷

  5. Docker 화면에서 Azure 구독을 선택한 다음 계속을 선택합니다.

  6. 드롭다운 메뉴에서 컨테이너 레지스트리를 선택하고 이미지 이름을 제공한 다음 유효성 검사 및 구성을 선택합니다.

    이미지를 빌드하고 Azure Container Registry에 게시하도록 Docker 파이프라인을 구성하는 방법을 보여 주는 스크린샷

    Azure Pipelines는 파이프라인을 정의하는 azure-pipelines.yml 파일을 생성합니다.

  7. azure-pipelines.yml 코드를 검토한 다음 저장 및 실행을 선택합니다.

    새 YAML 파이프라인의 저장 및 실행 단추 스크린샷

  8. 필요에 따라 커밋 메시지를 편집하고 설명을 제공합니다. 그런 다음 저장을 선택하고 다시 실행하여 azure-pipelines.yml 파일을 리포지토리에 커밋하고 빌드를 시작합니다.

  9. 빌드 실행 페이지에는 빌드 세부 정보 및 진행률이 표시됩니다. 파이프라인의 작동을 감시하려면 작업에서 빌드를 선택합니다.

    작업 실행 페이지의 빌드 링크를 보여 주는 스크린샷.

파이프라인 세부 정보

파이프라인은 Docker 컨테이너 템플릿에서 생성됩니다. 빌드 단계에서는 Docker v2 작업을 사용하여 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