Teilen über


Containerisieren einer Anwendung mithilfe von Paketo-Buildpacks

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für:✅ Basic/Standard ✅ Enterprise

Dieser Artikel beschreibt das Erstellen eines Containerimages mithilfe von Paketo-Buildpacks.

Der Azure Spring Apps-Dienst unterstützt das Erstellen eines Images aus Quellcode ohne Dockerfiles. Er ist nicht auf Java-Anwendungen beschränkt, sondern kann auch für andere Programmiersprachen und sogar statische Webinhalte verwendet werden. Mit dem Standardtarif verwendet der Dienst Open-Source-Paketo-Buildpacks, während er im Enterprise-Tarif VMware Tanzu-Buildpacks verwendet. Wenn Tanzu-Buildpacks nicht verfügbar sind oder kein Onlinedienst für die Verwendung von Paketo vorhanden ist, können Sie zu lokalen Paketo-Buildpacks wechseln, um Images zu erstellen. Stellen Sie sie dann in der Azure Container Registry oder anderen Docker-Registrierungen bereit.

In diesem Artikel erfahren Sie, wie Sie einen Generator mit einer TOML-Datei erstellen und dann den Quellcode oder die Artefaktdatei mit dem Generator erstellen. Weitere Informationen finden Sie unter builder.toml. Informationen zum Buildimage, zum Ausführen des Images und zum Stapel finden Sie unter Was sind Basisimages?.

Voraussetzungen

Standard-Plan

Der Azure Spring Apps-Standardtarif verfügt über einen integrierten Generator, den Sie nicht anpassen können. Wenn Sie den Standardtarif verwenden, müssen Sie eine TOML-Datei namens standard-builder.toml mit dem folgenden Inhalt erstellen. Mit dieser Datei können Sie einen Generator erstellen, der dem im Azure Spring Apps-Standardtarif verfügbaren Generator entspricht.

# filename: standard-builder.toml

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:12.0.0"
id = "paketo-buildpacks/java-azure"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-native-image:9.8.0"
id = "paketo-buildpacks/java-native-image"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:0.48.3"
id = "paketo-buildpacks/dotnet-core"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-native-image"

[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"

[build]
image = "paketobuildpacks/build-jammy-base:0.1.129"

[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:0.1.129"

Verwenden Sie den folgenden Befehl, um einen Generator mit dieser TOML-Datei zu erstellen:

pack builder create <builder-name> --config ./standard-builder.toml

Sie können den Generator mit dem folgenden Befehl überprüfen:

pack builder inspect <builder-name>

Verwenden Sie zum Erstellen ihres Java- oder .NET-Quellcodes in einem Containerimage mit diesem Generator den folgenden Befehl:

pack build <image-name> \
    --path <path-to-source-root> \
    --builder <builder-name>

Verwenden Sie den folgenden Befehl, um ein Artefakt (z. B. eine JAR- oder WAR-Datei) für ein Containerimage mit dem Generator zu erstellen:

pack build <image-name> \
    --path <path-to-artifact> \
    --builder <builder-name>

Enterprise-Tarif

Der Azure Spring Apps-Enterprise-Tarif verwendet VMware Tanzu-Buildpacks, um Quellcode für Containerimages zu erstellen. Tanzu-Buildpacks basieren auf Open-Source-Paketo-Buildpacks. Es ist also wahrscheinlich unmöglich, ein Paketo-Buildpack zu finden, das einem Tanzu-Buildpack genau entspricht.

In diesem Abschnitt können Sie sehen, wie Sie einen Generator mit Paketo-Buildpacks erstellen, die ähnlich wie der Generator im Enterprise-Tarif, aber nicht mit diesem identisch ist. Es liegt in Ihrer Verantwortung, Tests auszuführen oder Buildpacks zu prüfen, um die Kompatibilität des Builds in Ihrem Enterprise-Tarif und Ihres eigenen Generators auf Ihrem lokalen Computer zu bestätigen.

Der Enterprise-Tarif umfasst einen Standard-Generator, der aus den folgenden Komponenten besteht:

  • Betriebssystemstapel: io.buildpacks.stacks.jammy-base
  • Buildpacks:
    • tanzu-buildpacks/java-azure
    • tanzu-buildpacks/dotnet-core
    • tanzu-buildpacks/go
    • tanzu-buildpacks/web-servers
    • tanzu-buildpacks/nodejs
    • tanzu-buildpacks/python

Mithilfe der Pack-CLI können Sie einen ähnlichen Generator mit dem Paketo-Betriebssystemstapel und Paketo-Buildpacks auf Ihrem lokalen Computer erstellen. Anschließend können Sie diesen neu erstellten Generator verwenden, um ihren Anwendungsquellcode zu erstellen.

Wenn Sie einen anderen Generator als den Standardgenerator verwenden, müssen Sie dessen Konfiguration – Betriebssystemstapel und Buildpacks – überprüfen und dann einen ähnlichen Paketo-Generator erstellen. Um die Konfiguration eines Generators zu überprüfen, wechseln Sie zum Azure-Portal, suchen Sie Ihre Azure Spring Apps-Instanz, und zeigen Sie dann den Bereich Builddienst an. Suchen Sie den Generator, und wählen Sie dann Generator bearbeiten aus. Alternativ können Sie den Azure CLI-Befehl az spring build-service builder show verwenden.

Die folgende Tabelle zeigt den Paketo-Betriebssystemstapel, der den im Enterprise-Tarif verwendeten Betriebssystemstapeln entspricht:

Betriebssystemstapel im Enterprise-Tarif Paketo-Betriebssystemstapel
io.buildpacks.stacks.jammy-base paketobuildpacks/jammy-base-stack
Build: paketobuildpacks/build-jammy-base
Führen Sie paketobuildpacks/run-jammy-base aus.
io.buildpacks.stacks.jammy-full paketobuildpacks/jammy-full-stack
Build: paketobuildpacks/build-jammy-full
Führen Sie paketobuildpacks/run-jammy-full aus.
io.buildpacks.stacks.jammy-tiny paketobuildpacks/jammy-tiny-stack
Build: paketobuildpacks/build-jammy-tiny
Führen Sie paketobuildpacks/run-jammy-tiny aus.
io.buildpacks.stacks.bionic-base (End of support) paketobuildpacks/bionic-base-stack
Build: paketobuildpacks/build-bionic-base
Führen Sie paketobuildpacks/run-bionic-base aus.
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/bionic-full-stack
Build: paketobuildpacks/build-bionic-full
Führen Sie paketobuildpacks/run-bionic-full aus.

Die folgende Tabelle zeigt die Paketo-Buildpacks, die den im Enterprise-Tarif verwendeten Buildpacks entsprechen:

Buildpack im Enterprise-Tarif Paketo-Buildpack
tanzu-buildpacks/dotnet-core paketo-buildpacks/dotnet-core
tanzu-buildpacks/go paketo-buildpacks/go
tanzu-buildpacks/java-azure paketo-buildpacks/java-azure
tanzu-buildpacks/java-native-image paketo-buildpacks/java-native-image
tanzu-buildpacks/nodejs paketo-buildpacks/nodejs
tanzu-buildpacks/php paketo-buildpacks/php
tanzu-buildpacks/python paketo-buildpacks/python
tanzu-buildpacks/web-servers paketo-buildpacks/web-servers

Betrachten Sie den Standardgenerator im Enterprise-Tarif als Beispiel. Mit der folgenden TOML-Datei namens enterprise-builder.toml können Sie einen ähnlichen Generator auf Ihrem lokalen Computer erstellen:

# filename: enterprise-builder.toml

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:latest"
id = "paketo-buildpacks/java-azure"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:latest"
id = "paketo-buildpacks/dotnet-core"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/go:latest"
id = "paketo-buildpacks/go"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/web-servers:latest"
id = "paketo-buildpacks/web-servers"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/nodejs:latest"
id = "paketo-buildpacks/nodejs"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/python:latest"
id = "paketo-buildpacks/python"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"

[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"

[[order]]
[[order.group]]
id = "paketo-buildpacks/go"

[[order]]
[[order.group]]
id = "paketo-buildpacks/web-servers"

[[order]]
[[order.group]]
id = "paketo-buildpacks/nodejs"

[[order]]
[[order.group]]
id = "paketo-buildpacks/python"

[build]
image = "paketobuildpacks/build-jammy-base:latest"

[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:latest"

Verwenden Sie den folgenden Befehl, um einen Generator mit dieser TOML-Datei zu erstellen:

pack builder create <builder-name> --config ./enterprise-builder.toml

Sie können den Generator mit dem folgenden Befehl überprüfen:

pack builder inspect <builder-name>

Jetzt verfügen Sie über einen Generator, der dem Standardgenerator im Azure Spring Apps-Enterprise-Tarif ähnelt. Mit diesem Generator können Sie den folgenden Befehl verwenden, um Ihre JAR-Datei, WAR-Datei, Java-Quellcode, .NET-Quellcode, Golang-Quellcode, NodeJS-Quellcode oder Python-Quellcode in einem Containerimage zu erstellen:

pack build <image-name> \
    --path <path-to-source-root> \
    --builder <builder-name>

Verwenden Sie den folgenden Befehl, um ein Artefakt (z. B. eine JAR- oder WAR-Datei) für ein Containerimage mit dem Generator zu erstellen:

pack build <image-name> \
    --path <path-to-artifact> \
    --builder <builder-name>

Sie können enterprise-builder.toml auch anpassen, indem Sie Buildpacks hinzufügen oder entfernen, dann ihren vorhandenen Generator aktualisieren oder einen neuen Generator damit erstellen.

Anpassung

Buildpacks bieten eine Möglichkeit zum Anpassen verschiedener Konfigurationen. Die folgenden Beispiele zeigen häufige Szenarien zum Erstellen Ihres Containerimages mit bestimmten Anforderungen:

Weitere Informationen zu Eigenschaften und Konfigurationen finden Sie im Artikel zum Erstellen von Java-Apps mit Paketo-Buildpacks und in der Referenz zu Java-Buildpacks.