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. Kontenery systemu Linux lub Windows można tworzyć na podstawie agenta używanego w potoku.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie.
- Agent systemu Windows lub Linux potoku platformy Azure z zainstalowaną platformą Docker.
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie.
Rozwidlenie przykładowego repozytorium
W przeglądarce przejdź do następującego przykładowego repozytorium i rozwidlenia go na koncie usługi GitHub.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Tworzenie obrazu systemu Linux lub Windows
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do obszaru Potoki i wybierz pozycję Nowy potok lub Utwórz potok , jeśli utworzysz pierwszy potok w projekcie.
Wybierz pozycję GitHub jako lokalizację kodu źródłowego.
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.
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ść
vmImage
ubuntu-latest
lubwindows-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
Po zakończeniu wybierz pozycję Zapisz i uruchom.
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.
- Przejdź do kolekcji i utwórz projekt.
- W projekcie wybierz pozycję Potoki.
- Wybierz pozycję Utwórz potok.
- Wybierz pozycję GitHub Enterprise Server jako lokalizację kodu źródłowego.
- Jeśli jeszcze tego nie zrobiono, autoryzuj usługę Azure Pipelines do nawiązania połączenia z kontem usługi GitHub Enterprise Server.
- Wybierz pozycję Połącz z serwerem GitHub Enterprise Server.
- Wprowadź szczegóły konta, a następnie wybierz pozycję Weryfikuj i zapisz.
- Wybierz repozytorium. Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
- Aby skonfigurować potok, wybierz szablon Kompiluj obraz platformy Docker.
- 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, przy użyciu funkcji platformy Docker.
# 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'
- Wybierz pozycję Zapisz i uruchom.
- 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ń potok 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 oparte na platformie Windows hostowane przez firmę Microsoft są dostarczane z aparatem Moby i klientem wymaganym do kompilacji platformy Docker.
Obecnie nie można używać agentów systemu macOS hostowanych przez firmę Microsoft do tworzenia obrazów kontenerów, ponieważ aparat Moby wymagany do kompilowania obrazów nie jest wstępnie zainstalowany 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ługich interwałów ściągnięcia obrazów platformy Docker dla każdego zadania z rejestru kontenerów, niektóre często używane obrazy są wstępnie przechowywane w agentach hostowanych przez firmę Microsoft.
Jak mogę ustawić zmienną BuildKit dla kompilacji platformy Docker?
Zestaw BuildKit wprowadza ulepszenia kompilacji dotyczące wydajności, zarządzania magazynem, 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ć własnego 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. Przed zadaniem platformy Docker należy dodać zadanie Instalatora platformy Docker.
Jak utworzyć kompilację platformy Docker opartą na skrycie zamiast przy użyciu zadania platformy Docker?
Możesz użyć polecenia lub dowolnego innego polecenia platformy build
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 platformy Docker wywołuje plik binarny platformy Docker w skrycie i łączy kilka 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?
Jeśli używasz agentów hostowanych przez firmę Microsoft, każde zadanie jest wysyłane do nowo aprowizowanej maszyny wirtualnej na podstawie obrazu wygenerowanego na podstawie 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łasnych agentów, możesz buforować warstwy platformy Docker bez żadnych obejść, ponieważ problem z efemerycznym cyklem ż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:
Utwórz plik Dockerfile przy użyciu obrazu podstawowego zgodnego z architekturą docelową:
FROM arm64v8/alpine:latest
Uruchom następujący skrypt w zadaniu przed skompilowanie 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 konteneryzowanych aplikacji i publikowania wynikowych wyników testu, zobacz Publikowanie wyników testu zadania.
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 wypchnąć obraz do rejestru kontenerów, przejdź do jednego z następujących artykułów: