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

Los paquetes de compilación usan un compilador predeterminado, que consta de todos los componentes necesarios para ejecutar una compilación de tu servicio, incluidas las imágenes de compilación y de ejecución:

  • Imagen de compilación: la usa la imagen de compilación 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 se prepara tu aplicación o función para la contenedorización.
  • Imagen de ejecución: la imagen base a partir de la cual se crea la imagen de contenedor de tu servicio. Esta es la imagen que aloja tu aplicación o función compilada.

Ambas imágenes se pueden personalizar y ampliar para que se ajusten a tus necesidades. Por ejemplo, puedes personalizar imágenes para añadir los paquetes necesarios para compilar tu servicio o para instalar paquetes del sistema de forma que estén disponibles cuando se ejecute tu servicio.

Antes de empezar

Usas la CLI de pack para compilar tu servicio localmente en una imagen de contenedor.

Antes de empezar

  1. Instala Docker Community Edition (CE) en tu estación de trabajo. pack usa Docker como compilador de imágenes OCI.
  2. Instala Pack CLI.
  3. Instala la herramienta de control de versiones de Git para obtener la aplicación de ejemplo de GitHub.

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

Los buildpacks usan una imagen de compilador para crear tu servicio en una imagen de contenedor. Cuando se completa el proceso de compilación, la aplicación o la función se insertan en una imagen de ejecución. Consulta más información sobre el proceso de compilación en Conceptos de paquetes de compilación.

Extender la imagen del compilador

Para personalizar la imagen predeterminada del creador, sigue estos pasos:

  1. Crea una builder.Dockerfile personalizada a partir de la imagen predeterminada del creador. Debes especificar la etiqueta de la versión del generador que admita tu imagen base. Por ejemplo, la etiqueta de imagen base :v1 no es compatible con la etiqueta de compilación :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. Crea tu imagen de compilación personalizada a partir del archivo builder.Dockerfile:

    docker build -t BUILDER_IMAGE_NAME -f builder.Dockerfile .
    

    Sustituye BUILDER_IMAGE_NAME por el nombre que elijas para tu imagen de compilación personalizada.

  3. Ejecuta el pack buildcomando con tu imagen de compilador personalizada para crear la nueva imagen de contenedor de tu aplicación o función:

    pack build SERVICE_IMAGE_NAME --builder BUILDER_IMAGE_NAME
    

    Sustituye:

    • SERVICE_IMAGE_NAME con el nombre que elijas para la imagen de tu aplicación o función.
    • BUILDER_IMAGE_NAME con el nombre de tu imagen de compilación personalizada.

Ampliar la imagen de la carrera

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 :v1 no es compatible con la etiqueta de compilación :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 33:33
    
  2. Crea la imagen de la carrera personalizada a partir del archivo run.Dockerfile:

    docker build -t RUN_IMAGE_NAME -f run.Dockerfile .
    

    Sustituye RUN_IMAGE_NAME por el nombre que elijas para tu imagen de ejecución personalizada.

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

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

    Sustituye:

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