Condividi tramite


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 showAzure.

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 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).