Udostępnij za pośrednictwem


Szybki start: tworzenie obrazu kontenera w celu wdrażania aplikacji przy użyciu usługi Azure Pipelines

Azure DevOps Services

W tym przewodniku Szybki start pokazano, jak utworzyć obraz kontenera na potrzeby wdrażania aplikacji przy użyciu usługi Azure Pipelines. Aby skompilować ten obraz, wystarczy plik Dockerfile w repozytorium. Możesz tworzyć kontenery systemu Linux lub Windows w zależności od agenta używanego w twoim potoku.

Wymagania wstępne

Zrób fork przykładowego repozytorium

W przeglądarce przejdź do następującego przykładowego repozytorium i sforkuj je na swoim koncie GitHub.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Tworzenie obrazu systemu Linux lub Windows

  1. Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.

  2. Przejdź do obszaru Potoki i wybierz pozycję Nowy potok lub Utwórz potok , jeśli utworzysz pierwszy potok w projekcie.

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

  4. Wybierz repozytorium, a następnie wybierz pozycję Potok startowy.

    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zalogowania się, wprowadź swoje poświadczenia usługi GitHub.
    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
  5. Zastąp zawartość azure-pipelines.yml następującym kodem. Na podstawie tego, czy wdrażasz aplikację systemu Linux, czy Windows, upewnij się, że ustawiono odpowiednio wartość vmImageubuntu-latest lub windows-latest.

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. Po zakończeniu wybierz pozycję Zapisz i uruchom.

  7. Po dodaniu pliku azure-pipelines.yml do repozytorium zostanie wyświetlony monit o dodanie komunikatu zatwierdzenia. Wprowadź komunikat, a następnie wybierz pozycję Zapisz i uruchom.

W przypadku korzystania z własnych agentów upewnij się, że platforma Docker jest zainstalowana na hoście agenta, a aparat/demon platformy Docker jest uruchomiony z podwyższonym poziomem uprawnień.

Aby skompilować obraz, platforma Docker musi być zainstalowana na hoście agenta, a aparat/demon platformy Docker musi być uruchomiony z podwyższonym poziomem uprawnień. Wykonaj poniższe kroki, aby utworzyć potok przy użyciu edytora potoku YAML.

  1. Przejdź do kolekcji i utwórz projekt.
  2. W projekcie wybierz pozycję Rurociągi.
  3. Wybierz pozycję Utwórz potok.
  4. Wybierz pozycję GitHub Enterprise Server jako lokalizację kodu źródłowego.
  5. Jeśli jeszcze tego nie zrobiono, autoryzuj usługę Azure Pipelines do nawiązania połączenia z kontem usługi GitHub Enterprise Server.
    1. Wybierz pozycję Połącz z serwerem GitHub Enterprise Server.
    2. Wprowadź szczegóły konta, a następnie wybierz pozycję Weryfikuj i zapisz.
  6. Wybierz repozytorium. Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
  7. Aby skonfigurować potok, wybierz szablon Zbuduj obraz Docker.
  8. W edytorze potoku YAML zastąp zawartość pliku YAML następującym kodem. Zastąp nazwę puli nazwą puli, która zawiera własnego agenta z możliwością używania Dockera.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. Wybierz pozycję Zapisz i uruchom.
  2. Na stronie Zapisywanie i uruchamianie wybierz pozycję Zapisz i uruchom ponownie.

Aby uzyskać więcej informacji na temat kompilowania obrazów platformy Docker, zobacz zadanie platformy Docker używane przez tę przykładową aplikację. Można również bezpośrednio wywoływać polecenia platformy Docker przy użyciu zadania wiersza polecenia.

Obrazy kontenerów są kompilowane i przechowywane na agencie. Obraz można wypchnąć do usługi Google Container Registry, Docker Hub lub Azure Container Registry. Aby uzyskać więcej informacji, zobacz Wypychanie obrazu do usługi Docker Hub lub Google Container Registry lub Wypychanie obrazu do usługi Azure Container Registry.

Czyszczenie zasobów

Jeśli nie planujesz kontynuować korzystania z tej aplikacji, usuń pipeline i repozytorium kodu.

Często zadawane pytania

Jakich agentów mogę użyć do kompilowania obrazów kontenerów?

  • Obrazy kontenerów systemu Linux można kompilować przy użyciu agentów systemu Ubuntu hostowanych przez firmę Microsoft lub własnych agentów opartych na platformie Linux.

  • Obrazy kontenerów systemu Windows można kompilować przy użyciu agentów systemu Windows hostowanych przez firmę Microsoft lub własnych agentów opartych na platformie Windows. Wszystkie agenty działające na platformie Windows, hostowane przez firmę Microsoft, są wyposażone w silnik Moby i klienta niezbędnymi do kompilacji Docker.

  • Obecnie nie można używać agentów macOS hostowanych przez firmę Microsoft do budowy obrazów kontenerów, ponieważ silnik Moby wymagany do budowy obrazów nie jest zainstalowany fabrycznie na tych agentach.

Aby uzyskać więcej informacji, zobacz opcje agentów systemów Windows i Linux dostępne w przypadku agentów hostowanych przez firmę Microsoft.

Jakie wstępnie zbuforowane obrazy platformy Docker są dostępne na hostowanych agentach?

Aby uniknąć długiego czasu pobierania obrazów Docker dla każdego zadania z rejestru kontenerów, niektóre często używane obrazy są wstępnie przechowywane w agentach hostowanych przez Microsoft.

Jak mogę ustawić zmienną BuildKit dla kompilacji platformy Docker?

BuildKit wprowadza ulepszenia budowania dotyczące wydajności, zarządzania pamięcią, funkcjonalności funkcji i zabezpieczeń. Zestaw BuildKit nie jest obecnie obsługiwany na hostach systemu Windows.

Aby włączyć kompilacje platformy Docker przy użyciu zestawu BuildKit, ustaw zmienną DOCKER_BUILDKIT .

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

Jak mogę użyć samodzielnie hostowanego agenta?

Platforma Docker musi być zainstalowana, a aparat/demon uruchomiony na hoście agenta. Jeśli platforma Docker nie jest zainstalowana na hoście agenta, możesz dodać zadanie instalatora platformy Docker do potoku. Należy dodać zadanie Instalatora Docker przed zadaniem Docker.

Jak utworzyć kompilację platformy Docker opartą na skrycie zamiast przy użyciu zadania platformy Docker?

Możesz użyć polecenia build lub dowolnego innego polecenia platformy Docker.

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

To polecenie tworzy obraz odpowiadający jednemu skompilowanemu za pomocą zadania platformy Docker. Wewnętrznie zadanie Dockera wywołuje plik binarny Dockera na skrypcie i łączy szereg kolejnych poleceń, aby zapewnić kilka dodatkowych korzyści. Dowiedz się więcej o zadaniu platformy Docker.

Czy mogę ponownie używać buforowania warstw podczas kompilacji w usłudze Azure Pipelines?

Każde zadanie, jeśli używasz agentów hostowanych przez firmę Microsoft, jest wysyłane do nowo aprowizowanej maszyny wirtualnej na podstawie obrazu wygenerowanego z szablonów repozytorium azure-pipelines-image-generation. Te maszyny wirtualne są czyszczone po zakończeniu zadania. Ta efemeryczna żywotność zapobiega ponownemu używaniu tych maszyn wirtualnych w kolejnych zadaniach i ponownemu używaniu buforowanych warstw platformy Docker. Aby obejść ten problem, można skonfigurować wieloetapową kompilację, która tworzy dwa obrazy i wypycha je do rejestru obrazów na wczesnym etapie. Następnie możesz poinformować platformę Docker o użyciu tych obrazów jako źródła pamięci podręcznej z argumentem --cache-from .

Jeśli używasz własnoręcznie hostowanych agentów, możesz buforować warstwy Docker bez stosowania obejść, ponieważ problem krótkotrwałości cyklu życia nie ma zastosowania do tych agentów.

Jak mogę skompilować obrazy kontenerów systemu Linux dla architektur innych niż x64?

W przypadku korzystania z agentów systemu Linux hostowanych przez firmę Microsoft tworzone są obrazy kontenerów systemu Linux dla architektury x64. Aby utworzyć obrazy dla innych architektur, takich jak x86 lub procesor ARM, można użyć emulatora maszyny, takiego jak QEMU.

W poniższych krokach pokazano, jak utworzyć obraz kontenera procesora ARM przy użyciu QEMU:

  1. Utwórz plik Dockerfile przy użyciu obrazu podstawowego zgodnego z architekturą docelową:

    FROM arm64v8/alpine:latest
    
  2. Uruchom następujący skrypt w swojej pracy przed zbudowaniem obrazu.

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

Aby uzyskać więcej informacji, zobacz qemu-user-static w witrynie GitHub.

Jak mogę uruchomić testy i opublikować wyniki testów dla konteneryzowanych aplikacji?

Aby uzyskać różne opcje testowania aplikacji konteneryzowanych i publikowania uzyskanych wyników testów, zobacz zadanie Publikowanie wyników testów.

Następne kroki

Po utworzeniu obrazu kontenera wypchnij obraz do usługi Azure Container Registry, Docker Hub lub Google Container Registry. Aby dowiedzieć się, jak przesłać obraz do rejestru kontenerów, przejdź do jednego z następujących artykułów: