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 show
da 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 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 CA ao armazenamento confiável do sistema na compilação e no tempo de execução, consulte paketo-buildpacks/ca-certificates.
Para obter mais informações sobre propriedades e configurações, consulte Como construir aplicativos Java com Paketo Buildpacks e Java Buildpack Reference.