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
- Installez Docker Community Edition (CE) sur votre poste de travail. Docker est utilisé par
pack
en tant que générateur d'images OCI. - Installez la CLI Pack.
- 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 :
Créez un fichier
builder.Dockerfile
personnalisé à partir de l'image de compilateur par défaut. Vous devez spécifier le tag de 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
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.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 :
Créez un
run.Dockerfile
personnalisé à partir de l'image d'exécution par défaut. Vous devez spécifier le tag de 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 33:33
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.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.