In dieser Anleitung erfahren Sie, wie Sie Buildpacks nutzen, um mit Ihrem Anwendungsquellcode ein Container-Image erstellen. Beispiel: Sie können Buildpacks verwenden, um den Quellcode Ihres Cloud Run-Dienstes in einem Container-Image zu erstellen.
Es gibt zwei Methoden zum Erstellen von Container-Images mit Buildpacks:
- Erstellen Sie einen lokalen Build mit der
pack
-Befehlszeile, um Ihre Anwendung lokal zu testen und Änderungen vor der Bereitstellung schnell über Prototypen zu testen. - Build per Remotezugriff ausführen mit Cloud Build. Builds mit Cloud Build sind nützlich für große Anwendungen, die ressourcenintensive Build-Prozesse haben und kann auch zum Schutz Ihrer Softwarelieferkette beitragen.
Lokale Builds
Sie verwenden die pack
-CLI, um Ihre Anwendung lokal in einem Container-Image zu erstellen.
Hinweise
- Installieren Sie die Docker Community Edition (CE) auf Ihrer Workstation. Docker wird von
pack
als OCI-Image-Builder verwendet. - Installieren Sie die Pack-Befehlszeile.
- Installieren Sie das Tool Git Source Control, um die Beispielanwendung von GitHub herunterzuladen.
Anwendung lokal erstellen
Verwenden Sie den pack build
-Befehl und geben Sie den Standard-Builder --builder=gcr.io/buildpacks/builder
an, um Ihre Container-Images lokal zu erstellen.
pack build --builder=gcr.io/buildpacks/builder IMAGE_NAME
Ersetzen Sie IMAGE_NAME
durch den Namen des Container-Image Ihres Dienstes.
Sie können das Container-Image anpassen. Dazu erweitern Sie die Build- und Ausführungs-Images.
Beispielanwendung lokal erstellen
Die folgenden Beispiele zeigen, wie ein Beispiel lokal erstellt wird.
- Klonen Sie das Beispiel-Repository auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Wechseln Sie in das Verzeichnis, das den Workflows-Beispielcode enthält:
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
- Verwenden Sie
pack
, um das Image der Beispielanwendung zu erstellen:Go
pack build --builder=gcr.io/buildpacks/builder sample-go
Java
pack build --builder=gcr.io/buildpacks/builder sample-java-gradle
Node.js
pack build --builder=gcr.io/buildpacks/builder sample-node
PHP
pack build --builder=gcr.io/buildpacks/builder sample-php
Python
pack build --builder=gcr.io/buildpacks/builder sample-python
Ruby
pack build --builder=gcr.io/buildpacks/builder sample-ruby
.NET
pack build --builder=gcr.io/buildpacks/builder sample-dotnet
- Führen Sie das Image mit
docker
aus:Go
docker run -p8080:8080 sample-go
Java
docker run -it -ePORT=8080 -p8080:8080 sample-java-gradle
Node.js
docker run -it -ePORT=8080 -p8080:8080 sample-node
PHP
docker run -it --rm -p 8080:8080 sample-php
Python
docker run -it -ePORT=8080 -p8080:8080 sample-python
Ruby
docker run -it -ePORT=8080 -p8080:8080 sample-ruby
.NET
docker run -it -ePORT=8080 -p8080:8080 sample-dotnet
- Um die ausgeführte Anwendung aufzurufen, rufen Sie localhost:8080 auf.
Remote-Builds
Verwenden Sie Cloud Build, um Ihre Anwendung in einem Container-Image zu erstellen, und Artifact Registry als Container-Repository, von dem aus Sie die einzelnen Images speichern und bereitstellen.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Ihr Google Cloud-Projekt muss Zugriff auf ein Container-Image-Repository haben.
So konfigurieren Sie den Zugriff auf ein Docker-Repository in Artifact Registry:
- Erstellen Sie ein neues Docker-Repository an dem Speicherort, an dem sich auch Ihr Google Cloud-Projekt befindet.
Ersetzen Sie:gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
REPO_NAME
durch den Namen, den Sie für Ihr Docker-Repository wählen.REGION
durch einen Standort direkt im oder maximal nahe am Google Cloud-Projekt.DESCRIPTION
mit einer Beschreibung Ihrer Wahl.
Beispiel: Um ein
docker
-Repository inus-west2
mit der Beschreibung "Docker repository" zu erstellen, führen Sie folgenden Befehl aus:gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- Prüfen Sie, ob das Repository erstellt wurde:
gcloud artifacts repositories list
Der Name, den Sie für Ihr Docker-Repository wählen, sollte in der Liste angezeigt werden.
- Erstellen Sie ein neues Docker-Repository an dem Speicherort, an dem sich auch Ihr Google Cloud-Projekt befindet.
Anwendung per Remote-Zugriff erstellen
Mit dem gcloud builds submit
-Befehl können Sie Ihr Container-Image erstellen und in Ihr Repository hochladen.
Sie können das Container-Image entweder im Befehl selbst angeben oder eine Konfigurationsdatei verwenden.
Mit Befehl erstellen
Für die Erstellung ohne Konfigurationsdatei geben Sie das image
-Flag an:
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Ersetzen Sie:
LOCATION
durch den Namen der Region Ihres Container-Repositorys. Beispiel:us-west2
- Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts. REPO_NAME
durch den Namen des Docker-Repositorys.IMAGE_NAME
durch den Namen Ihres Container-Images
Beispiel:
gcloud builds submit --pack image=us-west2-docker.pkg.dev/my-project-id/my-buildpacks-docker-repo/app-image
Build mit Konfigurationsdateien erstellen
Sie können eine Konfigurationsdatei verwenden, um die Details der Image-Repository-Konfiguration zu definieren und den Build-Befehl zu vereinfachen. Die Konfigurationsdatei verwendet das YAML-Dateiformat und muss einen Build-Schritt enthalten, der die pack
-Befehlszeile verwendet.
- Erstellen Sie eine YAML-Datei mit dem Namen
cloudbuild.yaml
, die den URI Ihres Container-Image-Repositorys enthält.
options: logging: CLOUD_LOGGING_ONLY pool: {} projectId: PROJECT_ID steps: - name: gcr.io/k8s-skaffold/pack entrypoint: pack args: - build - LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME - --builder - gcr.io/buildpacks/builder:latest - --network - cloudbuild images: - LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Ersetzen Sie:
LOCATION
durch den Namen der Region Ihres Container-Repositorys, z. B.us-west2
.- Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts. REPO_NAME
durch den Namen des Docker-Repositorys.IMAGE_NAME
durch den Namen Ihres Container-Images
Erstellen Sie die Anwendung.
Wenn Sie Ihre Konfigurationsdatei
cloudbuild.yaml
genannt haben, können Sie folgenden Befehl ausführen:gcloud builds submit .
Beispiel: Beispielanwendung per Remotezugriff erstellen
In folgenden Beispielen wird gezeigt, wie Sie ein Beispiel für einen Remote-Build erstellen und dann prüfen, ob das Container-Image per Push in Ihr Repository in Artifact Registry übertragen wurde.
- Klonen Sie das Beispiel-Repository auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Wechseln Sie in das Verzeichnis, das den Workflows-Beispielcode enthält:
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
- Verwenden Sie
gcloud
, um den Anwendungsquellcode an Cloud Build zu senden:Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node
PHP
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby
.NET
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
-
Prüfen Sie, ob die Beispielanwendung erfolgreich in
REPO_NAME
veröffentlicht wurde:gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME
Ersetzen Sie:
LOCATION
durch den Namen der Region Ihres Container-Repositorys. Beispiel:us-west2
- Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts. REPO_NAME
durch den Namen des Docker-Repositorys.
Weitere Informationen
- Stellen Sie das Image in Cloud Run bereit.
- Umgebungsvariablen festlegen
- Build-Images konfigurieren
- Builds mit Cache-Images beschleunigen