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 personalizar o código-fonte do JDK para Java, consulte paketo-buildpacks/microsoft-openjdk.
- Para personalizar o Tomcat para WARs, consulte paketo-buildpacks/apache-tomcat.
- Para adicionar certificados de AC ao repositório de confiança do sistema em build e runtime, consulte paketo-buildpacks/ca-certificates.
Para obter mais informações sobre propriedades e configurações, consulte Como criar aplicativos Java com Buildpacks Paketo e Referência de Buildpack Java.