Udostępnij za pośrednictwem


Tworzenie i wypychanie obrazów platformy Docker do usługi Azure Container Registry przy użyciu języka YAML platformy Docker

Azure DevOps Services

W tym samouczku pokazano, jak używać potoku opartego na szablonie platformy Docker usługi Azure Pipelines, aby utworzyć konteneryzowaną aplikację i wypchnąć ją do usługi Azure Container Registry. Szablon konfiguruje potok YAML ciągłej integracji, w którym zmiany w repozytorium kodu wyzwalają potok do skompilowania i opublikowania zaktualizowanych obrazów Dockera w rejestrze.

Ciąg szablonów kontenerów Docker używa agentów hostowanych przez firmę Microsoft i tworzy połączenie z Azure Container Registry na podstawie jednostkowych uprawnień serwisowych. Aby zapoznać się z potokiem, który wykonuje podobny proces przy użyciu własnych agentów i utworzonego przez Ciebie połączenia z usługą, zobacz Kompilowanie i wypychanie obrazów platformy Docker do usługi Azure Container Registry.

Wymagania wstępne

  • Konto platformy Azure, na którym masz uprawnienia do tworzenia i konfigurowania zasobów. Jeśli nie masz konta platformy Azure, utwórz bezpłatne konto.

  • Organizacja i projekt usługi Azure DevOps, w którym masz uprawnienia do tworzenia potoków i wdrażania aplikacji. Aby utworzyć organizację lub projekt, zobacz Tworzenie nowej organizacji lub Tworzenie projektu w usłudze Azure DevOps.

  • Konto usługi GitHub.

    Ważne

    W przypadku korzystania z usługi GitHub w poniższych procedurach może zostać wyświetlony monit o utworzenie połączenia usługi GitHub, zalogowanie się do usługi GitHub, uwierzytelnianie w organizacjach usługi GitHub, zainstalowanie usługi Azure Pipelines lub autoryzowanie usługi Azure Pipelines. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby ukończyć proces. Aby uzyskać więcej informacji, zobacz Dostęp do repozytoriów GitHub.

Pobieranie przykładowej aplikacji

W usłudze GitHub, zaforkuj lub sklonuj repozytorium Przykładowej aplikacji Node.JS opartej na Dockerze i Kubernetesie.

Tworzenie rejestru kontenerów

  1. W witrynie Azure Portal zaloguj się do usługi Azure Cloud Shell, wybierając ikonę na górnym pasku menu. Upewnij się, że używasz powłoki Bash .

    Przycisk Azure Cloud Shell

  2. W usłudze Cloud Shell uruchom następujące polecenia, aby utworzyć grupę zasobów i rejestr kontenerów platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure. Nazwa rejestru kontenerów musi mieć małe litery.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Aby wdrożyć obraz Docker w rejestrze kontenerów Azure, musisz włączyć konto użytkownika administratora dla rejestru, które jest domyślnie wyłączone. Aby włączyć konto administracyjne dla rejestru, użyj parametru --admin-enabled z poleceniem az acr update. Aby uzyskać więcej informacji i instrukcji, zobacz Konto administratora.

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

Alternatywnie możesz użyć interfejsu użytkownika witryny Azure Portal do utworzenia rejestru kontenerów platformy Azure. Aby uzyskać instrukcje, zobacz Tworzenie rejestru kontenerów. Włącz konto administratora we właściwościach po utworzeniu rejestru.

Utwórz potok

  1. W projekcie usługi Azure DevOps wybierz pozycję Potoki>Nowy potok lub Utwórz potok, jeśli ten potok jest pierwszym w projekcie.

    Zrzut ekranu przedstawiający ekran Tworzenie nowego potoku.

  2. Wybierz pozycję GitHub jako lokalizację kodu źródłowego.

  3. Na ekranie Wybieranie repozytorium wybierz przykładowe repozytorium kodu.

  4. Na ekranie Konfigurowanie potoku wybierz pozycję Docker: Build and push an image to Azure Container Registry pipeline (Konfigurowanie potoku: kompilowanie i wypychanie obrazu do potoku usługi Azure Container Registry).

    Zrzut ekranu przedstawiający wybór potoku Kompilowanie i wypychanie obrazu Docker do rejestru kontenerów Azure.

  5. Na ekranie platformy Docker wybierz subskrypcję platformy Azure, a następnie wybierz pozycję Kontynuuj.

  6. Wybierz rejestr kontenerów z menu rozwijanego, podaj Nazwę obrazu, a następnie wybierz pozycję Zweryfikuj i skonfiguruj.

    Zrzut ekranu pokazujący, jak skonfigurować potok platformy Docker do budowania i publikowania obrazu w usłudze Azure Container Registry.

    Usługa Azure Pipelines generuje plik azure-pipelines.yml definiujący potok.

  7. Przejrzyj kod w azure-pipelines.yml, a następnie wybierz pozycję Zapisz i uruchom.

    Zrzut ekranu przedstawiający przycisk Zapisz i uruchom w nowym potoku YAML.

  8. Opcjonalnie zmodyfikuj komunikat zatwierdzenia i dodaj opis. Następnie wybierz pozycję Zapisz i uruchom ponownie, aby zatwierdzić plik azure-pipelines.yml w repozytorium i uruchomić kompilację.

  9. Strona uruchamiania kompilacji zawiera szczegóły kompilacji i postęp. Aby obejrzeć pipeline w działaniu, wybierz pozycję Kompiluj w obszarze Zadania.

    Zrzut ekranu przedstawiający link Kompilacja na stronie uruchamiania zadania.

Szczegóły rurociągu

Pipeline jest generowany z szablonu Docker container. Etap kompilacji używa zadania Docker v2 do budowania i wypchnięcia obrazu Docker do rejestru kontenerów.

Zadanie Docker używa serwisowego połączenia rejestru Docker z uwierzytelnianiem za pomocą jednostki głównej usługi, aby umożliwić potokowi przesyłanie obrazów do twojego rejestru kontenerów. Szablon kontenera Docker generuje to połączenie usługi podczas tworzenia potoku.

- 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)

Czyszczenie zasobów

Po zakończeniu korzystania z zasobów utworzonych w tym samouczku możesz je usunąć, aby uniknąć naliczania dodatkowych opłat. Uruchom następujące polecenie usługi Cloud Shell, aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby.

az group delete --name myapp-rg