Configura la compilación y la ejecución de imágenes

Buildpacks usa un compilador predeterminado que consiste en todos los componentes necesarios para ejecutar una compilación de tu servicio, incluidas una imagen de compilación y una imagen de ejecución:

  • Imagen de compilación: La usa la imagen del compilador para crear el entorno de compilación en el que se ejecuta el ciclo de vida de los paquetes de compilación. Aquí es donde tu aplicación o función se prepara para la creación de contenedores.
  • Imagen de ejecución: La imagen base a partir de la cual se compila la imagen de contenedor de tu servicio. Esta es la imagen que aloja la aplicación o función compilada.

Ambas imágenes se pueden personalizar y extender para adaptarlas a tus necesidades. Por ejemplo, puedes personalizar las imágenes a fin de agregar los paquetes necesarios para compilar tu servicio o instalar paquetes del sistema a fin de que estén disponibles cuando se ejecute el servicio.

Antes de comenzar

Usa la CLI de pack para compilar tu servicio de forma local en una imagen de contenedor.

Antes de comenzar

  1. Instala la edición de la comunidad de Docker (CE) en tu estación de trabajo. pack usa Docker como un compilador de imágenes de OCI.
  2. Instala la CLI de Pack.
  3. Instala la herramienta de control de fuente Git para obtener la aplicación de muestra de GitHub.

Personaliza las imágenes de compilación y ejecución

Buildpacks usa una imagen de compilador para construir tu servicio en una imagen de contenedor. Cuando se completa el proceso de compilación, tu aplicación o función se inserta en una imagen de ejecución. Obtén más información sobre el proceso de compilación en Conceptos de Buildpacks.

Extiende la imagen de compilador

Para personalizar la imagen de compilador predeterminada, haz lo siguiente:

  1. Crea un builder.Dockerfile personalizado a partir de la imagen de compilador predeterminada. Debes especificar la etiqueta para la versión del compilador que admita tu imagen base. Por ejemplo, la etiqueta de imagen base :v1 no es compatible con la etiqueta de compilador :google-22.

    Ejemplo:

    FROM gcr.io/buildpacks/builder
    USER root
    RUN apt-get update && apt-get install -y --no-install-recommends \
      subversion && \
      apt-get clean && \
      rm -rf /var/lib/apt/lists/*
    USER cnb
    
  2. Compila tu imagen de compilador personalizada desde el archivo builder.Dockerfile:

    docker build -t BUILDER_IMAGE_NAME -f builder.Dockerfile .
    

    Reemplaza BUILDER_IMAGE_NAME por el nombre que elijas para la imagen de compilador personalizada.

  3. Ejecuta el comando pack build con la imagen de compilador personalizada para compilar la imagen de contenedor nueva de la aplicación o función:

    pack build SERVICE_IMAGE_NAME --builder BUILDER_IMAGE_NAME
    

    Reemplaza lo siguiente:

    • SERVICE_IMAGE_NAME por el nombre que elijas para la imagen de la función o aplicación.
    • BUILDER_IMAGE_NAME por el nombre de la imagen de compilador personalizada.

Extiende la imagen de ejecución

Para personalizar la imagen de contenedor de ejecución predeterminada, haz lo siguiente:

  1. Crea un run.Dockerfile personalizado a partir de la imagen de ejecución predeterminada. Debes especificar la etiqueta de la versión del compilador que admita tu imagen de ejecución. Por ejemplo, la etiqueta de imagen de ejecución :v1 no es compatible con la etiqueta del compilador :google-22.

    Ejemplo:

    FROM gcr.io/buildpacks/gcp/run
    USER root
    RUN apt-get update && apt-get install -y --no-install-recommends \
      imagemagick && \
      apt-get clean && \
      rm -rf /var/lib/apt/lists/*
    USER
    
  2. Compila tu imagen de ejecución personalizada desde el archivo run.Dockerfile:

    docker build -t RUN_IMAGE_NAME -f run.Dockerfile .
    

    Reemplaza RUN_IMAGE_NAME por el nombre que elijas para la imagen de ejecución personalizada.

  3. Ejecuta el comando pack build con tu imagen de ejecución personalizada para compilar la nueva imagen de contenedor de la aplicación o función:

    pack build SERVICE_IMAGE_NAME --builder gcr.io/buildpacks/builder:v1 --run-image RUN_IMAGE
    

    Reemplaza lo siguiente:

    • SERVICE_IMAGE_NAME por el nombre que elijas para la imagen de la función o aplicación.
    • RUN_IMAGE_NAME por el nombre de la imagen de ejecución personalizada.