Configurer vos images de compilation et d'exécution

Buildpacks utilise un compilateur par défaut qui contient tous les composants nécessaires pour exécuter une compilation du service, y compris les images de compilation et d'exécution :

  • Image de compilation : utilisée par l'image du compilateur pour créer l'environnement de compilation dans lequel le cycle de vie des buildpacks est exécuté. C'est là que votre application ou fonction est préparée pour la conteneurisation.
  • Image d'exécution : image de base à partir de laquelle l'image de conteneur de votre service est créée. Il s'agit de l'image qui héberge votre application ou votre fonction compilée.

Vous pouvez personnaliser les deux images et les étendre selon vos besoins. Par exemple, vous pouvez personnaliser les images pour ajouter les packages requis pour créer votre service, ou pour installer des packages système afin qu'ils soient disponibles lors de l'exécution de votre service.

Avant de commencer

Vous utilisez la CLI pack pour créer votre service en local dans une image de conteneur.

Avant de commencer

  1. Installez Docker Community Edition (CE) sur votre poste de travail. Docker est utilisé par pack en tant que générateur d'images OCI.
  2. Installez la CLI Pack.
  3. Installez l'outil de contrôle de source Git pour récupérer l'exemple d'application depuis GitHub.

Personnaliser les images de compilation et d'exécution

Buildpacks utilise une image de compilateur pour créer votre service dans une image de conteneur. Une fois le processus de compilation terminé, votre application ou fonction est insérée dans une image d'exécution. Pour en savoir plus sur le processus de compilation, consultez la page Concepts de Buildpacks.

Étendre l'image de compilation

Pour personnaliser l'image de compilateur par défaut, procédez comme suit :

  1. Créez un fichier builder.Dockerfile personnalisé à partir de l'image du compilateur par défaut. Vous devez spécifier le tag pour la version du compilateur compatible avec votre image de base. Par exemple, le tag d'image de base :v1 n'est pas compatible avec le tag de compilateur :google-22.

    Exemple :

    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. Créez votre image de compilateur personnalisée à partir du fichier builder.Dockerfile :

    docker build -t BUILDER_IMAGE_NAME -f builder.Dockerfile .
    

    Remplacez BUILDER_IMAGE_NAME par le nom que vous avez choisi pour votre image de compilateur personnalisée.

  3. Exécutez la commande pack build avec votre image de compilateur personnalisée pour créer la nouvelle image de conteneur de votre application ou fonction :

    pack build SERVICE_IMAGE_NAME --builder BUILDER_IMAGE_NAME
    

    Remplacez :

    • SERVICE_IMAGE_NAME par le nom que vous avez choisi pour l'image de votre application ou de votre fonction.
    • BUILDER_IMAGE_NAME par le nom de votre image de compilateur personnalisée.

Étendre l'image d'exécution

Pour personnaliser l'image de conteneur d'exécution par défaut, procédez comme suit :

  1. Créez un fichier run.Dockerfile personnalisé à partir de l'image en cours d'exécution par défaut. Vous devez spécifier le tag pour la version du compilateur compatible avec votre image d'exécution. Par exemple, le tag d'image d'exécution :v1 n'est pas compatible avec le tag de compilateur :google-22.

    Exemple :

    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. Créez votre image d'exécution personnalisée à partir du fichier run.Dockerfile :

    docker build -t RUN_IMAGE_NAME -f run.Dockerfile .
    

    Remplacez RUN_IMAGE_NAME par le nom que vous avez choisi pour votre image d'exécution personnalisée.

  3. Exécutez la commande pack build avec votre image d'exécution personnalisée pour créer la nouvelle image de conteneur de votre application ou de votre fonction :

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

    Remplacez :

    • SERVICE_IMAGE_NAME par le nom que vous avez choisi pour l'image de votre application ou de votre fonction.
    • RUN_IMAGE_NAME par le nom de votre image d'exécution personnalisée.