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:
- Informationen zum Anpassen des JDK für Java-Quellcode finden Sie unter paketo-buildpacks/microsoft-openjdk.
- Informationen zum Anpassen von Tomcat für WARs finden Sie unter paketo-buildpacks/apache-tomcat.
- Informationen zum Hinzufügen von ZS-Zertifikaten zum Systemvertrauensspeicher zur Build- und Runtime finden Sie unter paketo-buildpacks/ca-certificates.
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.