Compartir vía


Contenedorización de una aplicación mediante Paketo Buildpacks

Nota:

Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.

Este artículo se aplica a: Enterprise ✅ Básico/Estándar ✅

En este artículo se describe cómo compilar una imagen de contenedor mediante Paketo Buildpacks.

El servicio Azure Spring Apps admite la creación de una imagen a partir del código fuente sin usar Dockerfiles. No se limita a las aplicaciones Java, sino que se extiende a otros lenguajes de programación e incluso al contenido web estático. En el plan Estándar, el servicio usa Paketo Buildpacks de código abierto, mientras que en el plan Enterprise, usa VMware Tanzu Buildpacks. Si Tanzu Buildpacks no está disponible o no hay ningún servicio en línea para usar Paketo, puede cambiar a Paketo Buildpacks local para compilar imágenes. A continuación, impleméntelos en Azure Container Registry u otros registros de Docker.

En este artículo se muestra cómo crear un generador con un archivo TOML y, a continuación, compilar el código fuente o el archivo de artefacto con el generador. Para obtener más información, vea builder.toml. Para comprender la imagen de compilación, ejecutar imagen y pila, consulte Qué son las imágenes base.

Requisitos previos

Plan Estándar

El plan Estándar de Azure Spring Apps incluye un generador integrado, que no se puede personalizar. Si usa el plan Estándar, debe crear un archivo TOML denominado standard-builder.toml con el siguiente contenido. Con este archivo, puede crear un generador equivalente al que está disponible en el plan Estándar de Azure Spring Apps.

# 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 crear un generador con este archivo TOML, use el siguiente comando:

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

Puede inspeccionar el generador mediante el comando siguiente:

pack builder inspect <builder-name>

Para compilar el código fuente de Java o el código fuente de .NET en una imagen de contenedor con este generador, use el siguiente comando:

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

Para compilar un artefacto, como un archivo JAR o WAR, en una imagen de contenedor con el generador, use el siguiente comando:

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

Plan Enterprise

El plan Enterprise de Azure Spring Apps usa VMware Tanzu Buildpacks para compilar código fuente en imágenes de contenedor. Tanzu Buildpacks se basa en Paketo Buildpacks de código abierto. Por lo tanto, es probable que sea imposible encontrar un paquete de compilación Paketo exactamente equivalente a un Tanzu.

En esta sección, puede ver cómo crear un generador con Paketo Buildpacks que esté cerca, pero no exactamente igual que el del plan Enterprise. Es responsabilidad suya ejecutar pruebas o buscar paquetes de compilación para confirmar la compatibilidad de la compilación en el plan Enterprise y en su propio generador en el equipo local.

El plan Enterprise incluye un generador predeterminado, que consta de los siguientes componentes:

  • Pila 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

Con la CLI del paquete, puede crear un generador similar con la pila del sistema operativo Paketo y Paketo Buildpacks en el equipo local. A continuación, puede usar este generador recién creado para compilar el código fuente de la aplicación.

Si usa un generador distinto del predeterminado, debe comprobar su configuración (pila del sistema operativo y paquetes de compilación) y, a continuación, crear un generador de Paketo similar a él. Para comprobar la configuración de un generador, vaya a Azure Portal, busque la instancia de Azure Spring Apps y, a continuación, vea el panel Servicio de compilación. Busque el generador y seleccione Editar generador. Como alternativa, puede usar el comando de la CLI de Azure az spring build-service builder show.

En la tabla siguiente se muestran los equivalentes de pila del sistema operativo Paketo a las pilas del sistema operativo usadas en el plan Enterprise:

Pila del sistema operativo en el plan Enterprise Pila del sistema operativo Paketo
io.buildpacks.stacks.jammy-base paketobuildpacks/jammy-base-stack
Compilación: paketobuildpacks/build-jammy-base
Ejecute paketobuildpacks/run-jammy-base.
io.buildpacks.stacks.jammy-full paketobuildpacks/jammy-full-stack
Compilación: paketobuildpacks/build-jammy-full
Ejecute paketobuildpacks/run-jammy-full.
io.buildpacks.stacks.jammy-tiny paketobuildpacks/jammy-tiny-stack
Compilación: paketobuildpacks/build-jammy-tiny
Ejecute paketobuildpacks/run-jammy-tiny.
io.buildpacks.stacks.bionic-base (End of support) paketobuildpacks/bionic-base-stack
Compilación: paketobuildpacks/build-bionic-base
Ejecute paketobuildpacks/run-bionic-base.
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/bionic-full-stack
Compilación: paketobuildpacks/build-bionic-full
Ejecute paketobuildpacks/run-bionic-full.

En la tabla siguiente se muestran los equivalentes de Paketo Buildpack a los paquetes de compilación usados en el plan Enterprise:

Buildpack en el plan 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/web-servers

Tome el generador predeterminado en el plan Enterprise como ejemplo. Con el siguiente archivo TOML, denominado enterprise-builder.toml, puede crear un generador similar en el equipo 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 crear una compilación con este archivo TOML, use el siguiente comando:

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

Puede inspeccionar el generador mediante el comando siguiente:

pack builder inspect <builder-name>

Ahora tiene un generador similar al generador predeterminado en el plan Enterprise de Azure Spring Apps. Con este generador, puede usar el siguiente comando para compilar el archivo JAR, el archivo WAR, el código fuente de Java, el código fuente de .NET, el código fuente de Golang, Node.js código fuente o código fuente de Python en una imagen de contenedor:

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

Para compilar un artefacto, como un archivo JAR o WAR, en una imagen de contenedor con el generador, use el siguiente comando:

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

También puede personalizar enterprise-builder.toml agregando o quitando paquetes de compilación, actualizando el generador existente o creando un nuevo generador con él.

Personalización

Los paquetes de compilación proporcionan una manera de personalizar varias configuraciones. En los ejemplos siguientes se muestran escenarios comunes para compilar la imagen de contenedor con requisitos específicos:

Para obtener más información sobre las propiedades y las configuraciones, vea Cómo compilar aplicaciones java con Paketo Buildpacks y Referencia de Java Buildpack.