Partilhar via


Containerize um aplicativo usando Paketo Buildpacks

Nota

Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a:✅ Basic/Standard ✅ Enterprise

Este artigo descreve como criar uma imagem de contêiner usando Paketo Buildpacks.

O serviço Azure Spring Apps dá suporte à criação de uma imagem a partir do código-fonte sem usar Dockerfiles. Ele não se limita a aplicações Java, mas se estende a outras linguagens de programação e até mesmo conteúdo estático da web. No plano Standard, o serviço usa Paketo Buildpacks de código aberto, enquanto no plano Enterprise, ele usa VMware Tanzu Buildpacks. Se o Tanzu Buildpacks não estiver disponível ou não houver nenhum serviço online para usar o Paketo, você poderá alternar para o Paketo Buildpacks local para criar imagens. Em seguida, implante-os no Registro de Contêiner do Azure ou em outros registros do Docker.

Este artigo mostra como criar um construtor com um arquivo TOML e, em seguida, criar seu código-fonte ou arquivo de artefato com o construtor. Para obter mais informações, consulte builder.toml. Para entender a imagem de compilação, a imagem de execução e a pilha, consulte O que são imagens base.

Pré-requisitos

Plano Standard

O plano do Azure Spring Apps Standard vem com um construtor interno, que você não pode personalizar. Se você usar o plano Standard, precisará criar um arquivo TOML chamado standard-builder.toml com o seguinte conteúdo. Com esse arquivo, você pode criar um construtor equivalente ao disponível no plano do 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"

Para criar um construtor com esse arquivo TOML, use o seguinte comando:

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

Você pode inspecionar o construtor usando o seguinte comando:

pack builder inspect <builder-name>

Para construir seu código-fonte Java ou código-fonte .NET em uma imagem de contêiner com este construtor, use o seguinte comando:

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

Para criar um artefato - como um arquivo JAR ou WAR - em uma imagem de contêiner com o construtor, use o seguinte comando:

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

Plano empresarial

O plano do Azure Spring Apps Enterprise usa o VMware Tanzu Buildpacks para criar código-fonte para imagens de contêiner. Tanzu Buildpacks é construído em cima de código aberto Paketo Buildpacks. Então, é provavelmente impossível encontrar um buildpack Paketo exatamente equivalente a um Tanzu.

Nesta seção, você pode ver como criar um construtor com o Paketo Buildpacks que esteja próximo, mas não exatamente igual ao do plano Enterprise. É sua responsabilidade executar testes ou examinar buildpacks para confirmar a compatibilidade da compilação em seu plano Enterprise e seu próprio construtor em sua máquina local.

O plano Enterprise vem com um construtor padrão, que consiste nos seguintes componentes:

  • Pilha de SO: io.buildpacks.stacks.jammy-base
  • Buildpacks:
    • tanzu-buildpacks/java-azure
    • tanzu-buildpacks/dotnet-core
    • Tanzu-BuildPacks/Go
    • tanzu-buildpacks/servidores web
    • tanzu-buildpacks/nodejs
    • tanzu-buildpacks/python

Usando a CLI do pacote, você pode criar um construtor semelhante com a pilha Paketo OS e Paketo Buildpacks em sua máquina local. Em seguida, você pode usar esse construtor recém-criado para criar o código-fonte do aplicativo.

Se você estiver usando um construtor diferente do padrão, você precisa verificar sua configuração - pilha de sistema operacional e buildpacks - e, em seguida, criar um construtor Paketo semelhante a ele. Para verificar a configuração de um construtor, vá para o portal do Azure, localize sua instância do Azure Spring Apps e exiba o painel Serviço de Compilação. Localize o construtor e, em seguida, selecione Editar construtor. Como alternativa, você pode usar o comando az spring build-service builder showda CLI do Azure .

A tabela a seguir mostra a pilha do sistema operacional Paketo equivalente às pilhas do sistema operacional usadas no plano Enterprise:

Pilha de SO no plano Enterprise Pilha do sistema operacional Paketo
io.buildpacks.stacks.jammy-base paketobuildpacks/jammy-base-stack
Construir: paketobuildpacks/build-jammy-base
Execute: paketobuildpacks/run-jammy-base
io.buildpacks.stacks.jammy-full paketobuildpacks/jammy-full-stack
Construir: paketobuildpacks/build-jammy-full
Execute: paketobuildpacks/run-jammy-full
io.buildpacks.stacks.jammy-tiny paketobuildpacks/jammy-tiny-stack
Construir: paketobuildpacks/build-jammy-tiny
Execute: paketobuildpacks/run-jammy-tiny
io.buildpacks.stacks.bionic-base (End of support) paketobuildpacks/biônica-base-stack
Construir: paketobuildpacks/build-bionic-base
Execute: paketobuildpacks/run-bionic-base
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/biônico-full-stack
Construir: paketobuildpacks/build-bionic-full
Execute: paketobuildpacks/run-bionic-full

A tabela a seguir mostra os equivalentes do Paketo Buildpack aos buildpacks usados no plano Enterprise:

Buildpack no plano Enterprise 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/servidores web

Tome o construtor padrão no plano Enterprise como exemplo. Com o seguinte arquivo TOML, chamado enterprise-builder.toml, você pode criar um construtor semelhante em sua máquina local:

# 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"

Para criar uma compilação com esse arquivo TOML, use o seguinte comando:

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

Você pode inspecionar o construtor usando o seguinte comando:

pack builder inspect <builder-name>

Agora você tem um construtor semelhante ao construtor padrão no plano do Azure Spring Apps Enterprise. Com este construtor, você pode usar o seguinte comando para construir seu arquivo JAR, arquivo WAR, código-fonte Java, código-fonte .NET, código-fonte Golang, código-fonte Node.js ou código-fonte Python para uma imagem de contêiner:

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

Para criar um artefato - como um arquivo JAR ou WAR - em uma imagem de contêiner com o construtor, use o seguinte comando:

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

Você também pode personalizar enterprise-builder.toml adicionando ou removendo buildpacks, atualizando seu construtor existente ou criando um novo construtor com ele.

Personalização

Buildpacks fornecem uma maneira de personalizar várias configurações. Os exemplos a seguir mostram cenários comuns para criar sua imagem de contêiner com requisitos específicos:

Para obter mais informações sobre propriedades e configurações, consulte Como construir aplicativos Java com Paketo Buildpacks e Java Buildpack Reference.