Schnellstart: Erstellen eines Containerimages zum Bereitstellen von Apps mit Azure Pipelines
Azure DevOps Services
In dieser Schnellstartanleitung wird erläutert, wie Sie ein Containerimage für die App-Bereitstellung mithilfe von Azure Pipelines erstellen. Zum Erstellen dieses Images benötigen Sie lediglich ein Dockerfile in Ihrem Repository. Sie können Linux- oder Windows-Container basierend auf dem Agent erstellen, den Sie in Ihrer Pipeline verwenden.
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.
GitHub-Repository mit einem Dockerfile. Wenn Sie über kein Repository verfügen, forken Sie das folgende Repository, das eine Beispielanwendung und ein Dockerfile enthält:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Erstellen eines Linux- oder Windows-Images
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie zu Ihrem Projekt.
Wechseln Sie zu Pipelines, und klicken Sie auf Neue Pipeline.
Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.
Wählen Sie Ihr Repository und dann Starterpipeline aus.
- Wenn Sie zu GitHub umgeleitet werden, um sich anzumelden, geben Sie Ihre GitHub-Anmeldeinformationen ein.
- Wenn Sie zu GitHub umgeleitet werden, um die Azure Pipelines-App zu installieren, wählen Sie Zustimmen und installieren aus.
Ersetzen Sie den Inhalt von azure-pipelines.yml durch den folgenden Code. Je nachdem, ob Sie eine Linux- oder Windows-App bereitstellen, stellen Sie sicher, dass Sie
vmImage
aufubuntu-latest
bzw.windows-latest
festlegen.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
Wenn Sie fertig sind, klicken Sie auf Speichern und ausführen.
Wenn Sie Ihrem Repository die Datei azure-pipelines.yml hinzufügen, werden Sie aufgefordert, eine Commitnachricht hinzuzufügen.
Weitere Informationen finden Sie in der Docker-Aufgabe, die von dieser Beispielanwendung verwendet wird. Sie können Docker-Befehle auch direkt mithilfe einer Befehlszeilenaufgabe aufrufen.
Bereinigen von Ressourcen
Wenn Sie nicht beabsichtigen, diese Anwendung weiterhin zu verwenden, löschen Sie die Pipeline und das Coderepository.
Häufig gestellte Fragen
Welche Agents kann ich verwenden, um Containerimages zu erstellen?
Sie können Linux-Containerimages mit von Microsoft gehosteten Ubuntu-Agents oder selbstgehosteten Linux-basierten Agents erstellen.
Sie können Windows-Containerimages mit von Microsoft gehosteten Windows-Agents oder selbstgehosteten Windows-basierten Agents erstellen. Alle von Microsoft gehosteten, plattformbasierten Windows-Agents werden mit der Moby-Engine und dem -Client ausgeliefert, die für Docker-Builds benötigt werden.
Sie können derzeit keine von Microsoft gehosteten macOS-Agents verwenden, um Containerimages zu erstellen, weil die für die Erstellung der Images erforderliche Moby-Engine in diesen Agents nicht vorinstalliert ist.
Weitere Informationen finden Sie unter Windows- und Linux-Agent-Optionen, die für von Microsoft gehostete Agents verfügbar sind.
Welche vorab zwischengespeicherten Images sind für gehostete Agents verfügbar?
Um lange Intervalle zum Pullen dieser Images für die einzelnen Aufträge aus der Containerregistrierung zu vermeiden, werden einige häufig verwendeten Images für die von Microsoft gehosteten Agents vorab zwischengespeichert. Die Liste der verfügbaren, vorab zwischengespeicherten Images finden Sie in den Versionshinweisen im Repository azure-pipelines-image-generation.
Wie lege ich die BuildKit-Variable für meine Docker-Builds fest?
BuildKit führt Buildverbesserungen rund um die Leistung, Speicherverwaltung, Featurefunktionalität und Sicherheit ein. BuildKit wird derzeit auf Windows-Hosts nicht unterstützt.
Um Docker-Builds mit BuildKit zu aktivieren, legen Sie die DOCKER_BUILDKIT-Variable fest.
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
Wie kann ich einen selbstgehosteten Agent verwenden?
Bevor Sie Ihr Containerimage erstellen, müssen Sie Docker auf Ihrem selbstgehosteten Computer installieren.
Fügen Sie in Ihrer Pipeline vor der Docker-Aufgabe, die Ihr Image erstellt, die Aufgabe für den Docker-Installer hinzu.
Wie kann ich einen skriptbasierten Docker-Build erstellen, anstatt die Docker-Aufgabe zu verwenden?
Sie können den build
-Befehl oder einen anderen Docker-Befehl verwenden.
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
Mit diesem Befehl wird ein Image erstellt, das dem mit der Docker-Aufgabe erstellten Image entspricht. Intern ruft die Docker-Aufgabe die Docker-Binärdatei in einem Skript auf und fügt ein paar weitere Befehle zusammen, um weitere Vorteile zu bieten. Informieren Sie sich weiter über Docker-Aufgaben.
Kann ich das Zwischenspeichern von Ebenen während Builds in Azure Pipelines wiederverwenden?
Wenn Sie von Microsoft gehostete Agents verwenden, wird jeder Auftrag basierend auf dem von den Repositoryvorlagen (azure-pipelines-image-generation) generierten Image auf einen neu bereitgestellten virtuellen Computer verteilt. Diese virtuellen Computer werden nach Abschluss des Auftrags bereinigt. Diese kurze Lebensdauer verhindert die erneute Verwendung dieser virtuellen Computer für nachfolgende Aufträge und die Wiederverwendung von zwischengespeicherten Docker-Ebenen. Als Problemumgehung können Sie einen mehrstufigen Build einrichten, der zwei Images generiert und diese zu einem frühen Zeitpunkt an eine Imageregistrierung pusht. Anschließend können Sie Docker mit der --cache-from
-Anweisung anweisen, diese Images als Cachequelle zu verwenden.
Wenn Sie selbstgehostete Agents verwenden, können Sie Docker-Ebenen ohne Problemumgehungen zwischenspeichern, da das Problem der kurzen Lebensdauer nicht für diese Agents gilt.
Wie erstelle ich Linux-Containerimages für andere Architekturen als x64?
Wenn Sie von Microsoft gehostete Linux-Agents verwenden, erstellen Sie Linux-Containerimages für die x64-Architektur. Um Images für andere Architekturen (z. B. x86- oder ARM-Prozessor) zu erstellen, können Sie einen Computeremulator wie QEMU verwenden.
Die folgenden Schritte zeigen, wie Sie mithilfe von QEMU ein ARM-Prozessorcontainerimage erstellen:
Erstellen Sie Ihr Dockerfile mit einem Basisimage, das der Zielarchitektur entspricht:
FROM arm64v8/alpine:latest
Führen Sie das folgende Skript in Ihrem Auftrag aus, bevor Sie das Image erstellen:
# 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
Weitere Informationen finden Sie unter qemu-user-static auf GitHub.
Wie kann ich Tests ausführen und Testergebnisse für containerisierte Anwendungen veröffentlichen?
Verschiedene Optionen zum Testen containerisierter Anwendungen und Veröffentlichen der resultierenden Testergebnisse finden Sie unter Aufgabe zum Veröffentlichen von Testergebnissen.
Nächste Schritte
Nachdem Sie Ihr Containerimage erstellt haben, pushen Sie das Image an Azure Container Registry, Docker Hub oder Google Container Registry. Wenn Sie erfahren möchten, wie Sie ein Image an eine Containerregistrierung pushen, fahren Sie mit einem der folgenden Artikel fort: