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 nowego repozytorium kodu wyzwalają potok w celu skompilowania i opublikowania zaktualizowanych obrazów platformy Docker w rejestrze.

Potok szablonu kontenera platformy Docker używa agentów hostowanych przez firmę Microsoft i tworzy połączenie usługi oparte na jednostce usługi z usługą Azure Container Registry. 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 Access to GitHub repozytoria.

Pobieranie przykładowej aplikacji

W usłudze GitHub rozwidlenie lub sklonuj repozytorium aplikacji Przykładowe platformy Docker i Kubernetes Node.JS.

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 usługi 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 platformy Docker w rejestrze kontenerów platformy Azure, musisz włączyć konto użytkownika administratora dla rejestru, które jest domyślnie wyłączone. Aby włączyć użytkownika administratora dla rejestru, użyj --admin-enabled parametru 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.

Tworzenie potoku

  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 do platformy Docker do potoku usługi Azure Container Registry.

  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 przedstawiający sposób konfigurowania potoku platformy Docker w celu kompilowania 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 Commit (Zatwierdzenie) i podaj 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ć potok w akcji, wybierz pozycję Kompiluj w obszarze Zadania.

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

Szczegóły potoku

Potok jest generowany na podstawie szablonu kontenera platformy Docker. Etap kompilacji używa zadania platformy Docker w wersji 2 do kompilowania i wypychania obrazu platformy Docker do rejestru kontenerów.

Zadanie platformy Docker używa połączenia usługi rejestru platformy Docker z uwierzytelnianiem jednostki usługi, aby umożliwić potokowi wypychanie obrazów do rejestru kontenerów. Szablon kontenera platformy 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