Containerizzare un'applicazione usando Paketo Buildpacks
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a:✅ Basic/Standard ✅ Enterprise
Questo articolo descrive come creare un'immagine del contenitore usando Paketo Buildpacks.
Il servizio Azure Spring Apps supporta la creazione di un'immagine dal codice sorgente senza usare Dockerfile. Non è limitato alle applicazioni Java, ma si estende ad altri linguaggi di programmazione e anche a contenuti Web statici. Nel piano Standard, il servizio usa buildpacks Paketo open source, mentre nel piano Enterprise usa buildpack VMware Tanzu. Se i buildpack Tanzu non sono disponibili o non è disponibile alcun servizio online per l'uso di Paketo, è possibile passare ai buildpack Di Paketo locali per creare immagini. Distribuirli quindi in Registro Azure Container o in altri registri Docker.
Questo articolo illustra come creare un generatore con un file TOML e quindi compilare il codice sorgente o il file di artefatto con il generatore. Per altre informazioni, vedere builder.toml. Per comprendere l'immagine di compilazione, eseguire l'immagine e lo stack, vedere Informazioni sulle immagini di base.
Prerequisiti
Piano Standard
Il piano Standard di Azure Spring Apps include un generatore predefinito, che non è possibile personalizzare. Se si usa il piano Standard, è necessario creare un file TOML denominato standard-builder.toml con il contenuto seguente. Con questo file, è possibile creare un generatore equivalente a quello disponibile nel piano Azure Spring Apps Standard.
# 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"
Per creare un generatore con questo file TOML, usare il comando seguente:
pack builder create <builder-name> --config ./standard-builder.toml
È possibile esaminare il generatore usando il comando seguente:
pack builder inspect <builder-name>
Per compilare il codice sorgente Java o il codice sorgente .NET in un'immagine del contenitore con questo generatore, usare il comando seguente:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
Per compilare un artefatto, ad esempio un file JAR o WAR, in un'immagine del contenitore con il generatore, usare il comando seguente:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
Piano Enterprise
Il piano Enterprise di Azure Spring Apps usa i buildpack VMware Tanzu per compilare il codice sorgente per le immagini del contenitore. Tanzu Buildpacks è basato su Buildpacks open source. Quindi, probabilmente è impossibile trovare una buildpack Paketo esattamente equivalente a una Tanzu.
In questa sezione è possibile vedere come creare un generatore con Buildpack Paketo vicino, ma non esattamente uguale a quello del piano Enterprise. È responsabilità dell'utente eseguire test o esaminare i buildpack per verificare la compatibilità della build nel piano Enterprise e nel proprio generatore nel computer locale.
Il piano Enterprise include un generatore predefinito, costituito dai componenti seguenti:
- Stack del sistema operativo: 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
Usando l'interfaccia della riga di comando pack, è possibile creare un generatore simile con lo stack del sistema operativo Paketo e i Buildpack Di Paketo nel computer locale. È quindi possibile usare questo generatore appena creato per compilare il codice sorgente dell'applicazione.
Se si usa un generatore diverso da quello predefinito, è necessario controllarne la configurazione - stack del sistema operativo e buildpacks - e quindi creare un generatore Paketo simile a esso. Per controllare la configurazione di un generatore, passare alla portale di Azure, individuare l'istanza di Azure Spring Apps e quindi visualizzare il riquadro Compila servizio. Trovare il generatore e quindi selezionare Modifica generatore. In alternativa, è possibile usare il comando dell'interfaccia della riga di comando di az spring build-service builder show
Azure.
La tabella seguente illustra gli stack di sistemi operativi Paketo equivalenti agli stack del sistema operativo usati nel piano Enterprise:
Stack del sistema operativo nel piano Enterprise | Stack del sistema operativo Paketo |
---|---|
io.buildpacks.stacks.jammy-base |
paketobuildpacks/jammy-base-stack Costruire: paketobuildpacks/build-jammy-base Eseguire: paketobuildpacks/run-jammy-base |
io.buildpacks.stacks.jammy-full |
paketobuildpacks/jammy-full-stack Costruire: paketobuildpacks/build-jammy-full Eseguire: paketobuildpacks/run-jammy-full |
io.buildpacks.stacks.jammy-tiny |
paketobuildpacks/jammy-tiny-stack Costruire: paketobuildpacks/build-jammy-tiny Eseguire: paketobuildpacks/run-jammy-tiny |
io.buildpacks.stacks.bionic-base (End of support) |
paketobuildpacks/bionic-base-stack Costruire: paketobuildpacks/build-bionic-base Eseguire: paketobuildpacks/run-bionic-base |
io.buildpacks.stacks.bionic-full (End of support) |
paketobuildpacks/bionic-full-stack Costruire: paketobuildpacks/build-bionic-full Eseguire: paketobuildpacks/run-bionic-full |
La tabella seguente mostra gli equivalenti di Paketo Buildpack ai buildpack usati nel piano Enterprise:
Buildpack nel piano Enterprise | Pacchetto di compilazione Paketo |
---|---|
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 |
Prendere come esempio il generatore predefinito nel piano Enterprise. Con il file TOML seguente, denominato enterprise-builder.toml, è possibile creare un generatore simile nel computer locale:
# 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"
Per creare una compilazione con questo file TOML, usare il comando seguente:
pack builder create <builder-name> --config ./enterprise-builder.toml
È possibile esaminare il generatore usando il comando seguente:
pack builder inspect <builder-name>
È ora disponibile un generatore simile al generatore predefinito nel piano Enterprise di Azure Spring Apps. Con questo generatore, è possibile usare il comando seguente per compilare il file JAR, il file WAR, il codice sorgente Java, il codice sorgente .NET, il codice sorgente Golang, il codice sorgente NodeJS o il codice sorgente Python in un'immagine del contenitore:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
Per compilare un artefatto, ad esempio un file JAR o WAR, in un'immagine del contenitore con il generatore, usare il comando seguente:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
È anche possibile personalizzare enterprise-builder.toml aggiungendo o rimuovendo i buildpack, quindi aggiornando il generatore esistente o creando un nuovo generatore con esso.
Personalizzazione
I buildpack consentono di personalizzare varie configurazioni. Gli esempi seguenti illustrano scenari comuni per la compilazione dell'immagine del contenitore con requisiti specifici:
- Per personalizzare il codice sorgente JDK per Java, vedere paketo-buildpacks/microsoft-openjdk.
- Per personalizzare Tomcat per le richieste war, vedere paketo-buildpacks/apache-tomcat.
- Per aggiungere certificati CA all'archivio attendibilità del sistema in fase di compilazione e runtime, vedere paketo-buildpacks/ca-certificates.
Per altre informazioni sulle proprietà e sulle configurazioni, vedere How to Build Java Apps with Paketo Buildpacks and Java Buildpack Reference (Come creare app Java con Buildpack Di Paketo e Informazioni di riferimento su Buildpack Java).