Compartilhar via


Conteinerizar um aplicativo usando Buildpacks Paketo

Observação

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

O plano consumo e dedicado Standard 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 mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a:✅ Básico/Standard ✅ Enterprise

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

O serviço Aplicativos Spring do Azure dá suporte à criação de uma imagem do código-fonte sem usar Dockerfiles. Ele não se limita a aplicativos 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 Buildpacks Paketo de código aberto, enquanto no plano Enterprise, ele usa Buildpacks VMware Tanzu. Se os Tanzu Buildpacks não estiverem disponíveis ou não houver nenhum serviço online para usar o Paketo, você poderá alternar para Buildpacks Paketo locais 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 build, a imagem de execução e a pilha, consulte O que são imagens base.

Pré-requisitos

Plano Standard

O plano Standard dos Aplicativos Spring do Azure 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 conteúdo a seguir. Com esse arquivo, você pode criar um construtor equivalente ao disponível no plano padrão dos Aplicativos Spring do Azure.

# 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 este 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 criar 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 Enterprise

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

Nesta seção, você pode ver como criar um construtor com Buildpacks Paketo que está próximo, mas que não é exatamente o mesmo do plano Enterprise. É sua responsabilidade executar testes ou examinar buildpacks para confirmar a compatibilidade do build em seu plano Enterprise e seu próprio construtor em seu computador local.

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

  • Pilha do sistema operacional: 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 a CLI do pacote, você pode criar um construtor semelhante com a pilha do sistema operacional Paketo e Buildpacks Paketo em seu computador 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, será necessário verificar sua configuração, pilha e buildpacks do sistema operacional, e, em seguida, criar um construtor Paketo semelhante a ele. Para verificar a configuração de um construtor, acesse o portal do Azure, localize sua instância dos Aplicativos Spring do Azure e exiba o painel do Serviço de Build. Localize o construtor e selecione Editar Construtor. Como alternativa, você pode usar o comando da CLI do Azure az spring build-service builder show.

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

Pilha do sistema operacional no plano Enterprise Pilha do sistema operacional Paketo
io.buildpacks.stacks.jammy-base paketobuildpacks/jammy-base-stack
Build: paketobuildpacks/build-jammy-base
Execute: paketobuildpacks/run-jammy-base
io.buildpacks.stacks.jammy-full paketobuildpacks/jammy-full-stack
Build: paketobuildpacks/build-jammy-full
Execute: paketobuildpacks/run-jammy-full
io.buildpacks.stacks.jammy-tiny paketobuildpacks/jammy-tiny-stack
Build: paketobuildpacks/build-jammy-tiny
Execute: paketobuildpacks/run-jammy-tiny
io.buildpacks.stacks.bionic-base (End of support) paketobuildpacks/bionic-base-stack
Build: paketobuildpacks/build-bionic-base
Execute: paketobuildpacks/run-bionic-base
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/bionic-full-stack
Build: paketobuildpacks/build-bionic-full
Execute: paketobuildpacks/run-bionic-full

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

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

Veja como exemplo o construtor padrão no plano Enterprise. Com o seguinte arquivo TOML, chamado enterprise-builder.toml, você pode criar um construtor semelhante em seu computador 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 um build com este 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 Enterprise dos Aplicativos Spring do Azure. Com esse construtor, você pode usar o seguinte comando para criar seu arquivo JAR, arquivo WAR, código-fonte Java, código-fonte .NET, código-fonte Golang, código-fonte NodeJS ou código-fonte Python em 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 o construtor existente ou criando um novo construtor com ele.

Personalização

Os 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 criar aplicativos Java com Buildpacks Paketo e Referência de Buildpack Java.