Build konfigurieren und Images ausführen

Buildpacks verwendet einen Standard-Builder, der alle Komponenten, die zum Ausführen eines Dienstes erforderlich sind, sowie ein Build- und ein Run-Image umfasst:

  • Build-Image: Wird vom Builder-Image verwendet, um die Build-Umgebung zu erstellen, in der der Lebenszyklus der Buildpacks ausgeführt wird. Hier ist die Anwendung oder Funktion für die Containerisierung vorbereitet.
  • Run-Image: Das Basis-Image, aus dem das Container-Image Ihres Dienstes erstellt wird. Dies ist das Image, auf dem Ihre erstellte Anwendung oder Funktion gehostet wird.

Beide Images können an Ihre Anforderungen angepasst werden. Beispielsweise können Sie Images anpassen, um die für die Erstellung Ihres Dienstes erforderlichen Pakete hinzuzufügen oder Systempakete zu installieren, damit sie bei der Ausführung Ihres Dienstes verfügbar sind.

Hinweis

Sie verwenden die pack-CLI, um Ihren Dienst lokal in einem Container-Image zu erstellen.

Hinweis

  1. Installieren Sie die Docker Community Edition (CE) auf Ihrer Workstation. Docker wird von pack als OCI-Image-Builder verwendet.
  2. Installieren Sie die Pack-Befehlszeile.
  3. Installieren Sie das Tool Git Source Control, um die Beispielanwendung von GitHub herunterzuladen.

Build- und Run-Images anpassen

Buildpacks verwenden ein Builder-Image, um Ihren Dienst in einem Container-Image zu erstellen. Wenn der Build-Prozess abgeschlossen ist, wird Ihre Anwendung oder Funktion in ein Run-Image eingefügt. Weitere Informationen zum Build-Prozess finden Sie unter Konzepte der Buildpacks.

Builder-Image erweitern

So passen Sie das Standard-Builder-Image an:

  1. Erstellen Sie aus dem Builder-Standard-Image ein benutzerdefiniertes builder.Dockerfile. Sie müssen das Tag für die Version des Builders angeben, die Ihr Basis-Image unterstützt. Beispiel: Das Basis-Image-Tag :v1 wird vom Builder-Tag :google-22 nicht unterstützt.

    Beispiel:

    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. Erstellen Sie Ihr benutzerdefiniertes Builder-Image aus der Datei builder.Dockerfile:

    docker build -t BUILDER_IMAGE_NAME -f builder.Dockerfile .
    

    Ersetzen Sie BUILDER_IMAGE_NAME durch den Namen, den Sie für Ihr benutzerdefiniertes Builder-Image auswählen.

  3. Führen Sie den Befehl pack build mit Ihrem benutzerdefinierten Builder-Image aus, um das neue Container-Image der Anwendung oder Funktion zu erstellen:

    pack build SERVICE_IMAGE_NAME --builder BUILDER_IMAGE_NAME
    

    Ersetzen Sie:

    • SERVICE_IMAGE_NAME durch den Namen, den Sie für das Anwendungs- oder Funktions-Image auswählen.
    • BUILDER_IMAGE_NAME durch den Namen Ihres benutzerdefinierten Builder-Images.

Ausführungs-Image erweitern

So passen Sie das Standard-Container-Image an:

  1. Erstellen Sie ein benutzerdefiniertes run.Dockerfile aus dem Standard-Run-Image. Sie müssen das Tag für die Version des Builders angeben, die Ihr Ausführungs-Image unterstützt. Beispiel: Das Ausführungs-Image-Tag :v1 wird vom :google-22-Builder-Tag nicht unterstützt.

    Beispiel:

    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. Erstellen Sie Ihr benutzerdefiniertes Run-Image aus der Datei run.Dockerfile:

    docker build -t RUN_IMAGE_NAME -f run.Dockerfile .
    

    Ersetzen Sie RUN_IMAGE_NAME durch den Namen, den Sie für Ihr benutzerdefiniertes Run-Image ausgewählt haben.

  3. Führen Sie den Befehl pack build mit Ihrem benutzerdefinierten Run-Image aus, um das neue Container-Image Ihrer Anwendung oder Funktion zu erstellen:

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

    Ersetzen Sie:

    • SERVICE_IMAGE_NAME durch den Namen, den Sie für Ihr Anwendungs- oder Funktions-Image auswählen.
    • RUN_IMAGE_NAME durch den Namen Ihres benutzerdefinierten Run-Images.