Anwendungen mit Buildpacks erstellen

Ein Build oder ein Image-Build ist ein Mechanismus, mit dem Sie ein Container-Image aus Ihrem Quellcode erstellen können. Code Engine unterstützt die Erstellung aus einer Dockerfile und Cloud Native Buildpacks.

Vorbereitende Schritte

Alle Code Engine-Benutzer müssen über ein nutzungsabhängiges Konto verfügen. Für Tutorien können Kosten anfallen. Verwenden Sie den Cost Estimator, um einen Kostenvoranschlag auf der Grundlage Ihrer voraussichtlichen Nutzung zu erstellen. Weitere Informationen finden Sie unter Preisstruktur fürCode Engine.

Registry-Zugriff einrichten

Da der Build als Ausgabe ein Image erzeugt, das in einer Container-Registry gespeichert wird, müssen Sie für Code Engine den Zugriff auf eine Image-Registry konfigurieren. Erstellen Sie den Registry-Zugriff mit dem Befehl ibmcloud ce secret create --format registry, um ein Image in Docker Hub zu speichern. Verwenden Sie im folgenden Beispiel dockerhub als Namen des Registry-Zugriffs und geben Sie Ihre Docker Hub-ID als Benutzernamen an. Als Docker Hub-Kennwort können Sie Ihr persönliches Docker Hub-Kennwort oder ein Zugriffstoken angeben.

ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password

Beispielausgabe

Creating registry secret 'dockerhub'...
OK

Weitere Informationen enthält die Dokumentation für das Hinzufügen des Registry-Zugriffs.

Build erstellen

Erstellen Sie einen Build, der Informationen zum Quellcode für Ihre App oder Ihren Job enthält. Zu den Informationen können die Position und Zugriffsdaten für den Job oder die App gehören.

Der Befehl ibmcloud ce build create dient nicht zur Erstellung eines Image, sondern erstellt die Konfiguration für den Build eines Image. Der Befehl ibmcloud ce buildrun submit referenziert die Buildkonfiguration, um ein Image zu erstellen. Die Optionen, die Sie für den Befehl build create oder build update angeben, werden erst bei Ausführung des Befehls buildrun submit validiert oder zum Erstellen eines Images verwendet. Mit der Buildkonfiguration können nacheinander mehrere Builds für ein Image ausgeführt werden, beispielsweise nach dem Anwenden von Änderungen auf das Quellenrepository.

Verwenden Sie im folgenden Beispiel den Befehl ibmcloud ce build create, um die Buildkonfiguration zu erstellen. Geben Sie tutorial-build als Namen des Builds, https://github.com/IBM/CodeEngine als Position des Quellcodes und /s2i-buildpacks als Kontextverzeichnisordner an, der Ihre Quelle enthält. Verwenden Sie den geheimen Schlüssel für die Registry dockerhub, der zuvor für den Registry-Zugriff erstellt wurde. Geben Sie buildpacks als Buildstrategie für die Kompilierung des Quellcodes und small als Buildgröße an.

ibmcloud ce build create --name tutorial-build --source https://github.com/IBM/CodeEngine --commit main --context-dir /s2i-buildpacks --registry-secret dockerhub --image docker.io/<your_docker_ID>/tutorial --size small --strategy buildpacks

Beispielausgabe

Creating build 'tutorial-build'...
OK

Die Option size gibt die Größe für den Build an; sie legt die Menge der verwendeten Ressourcen fest. Gültige Werte sind small, medium, large, xlarge und xxlarge. Der Wert für size bildet die Buildanforderungen des Quellcodes für Ihre App bzw. Ihren Job ab. Wenn der Build aufgrund von nicht ausreichendem Hauptspeicher oder Plattenspeicher fehlschlägt oder nicht schnell genug ist, wechseln Sie versuchsweise zu einer größeren Größe. Eine größere Buildgröße bedeutet auch, dass dem Buildprozess mehr Hauptspeicher und CPU-Kerne zugeordnet werden. Eine Erhöhung dieser Größe kann den Erstellungsprozess wahrscheinlich beschleunigen, aber diese Aktion erhöht auch die Kosten. Weitere Informationen zu Builds finden Sie unter Tipps zur Fehlerbehebung.

Buildausführung übergeben

Sobald eine Buildkonfiguration erstellt ist, können Sie auf Basis dieser Buildkonfiguration mit dem Befehl ibmcloud ce buildrun submit einen Build ausführen. Im folgenden Beispiel wird die Buildkonfiguration tutorial-build referenziert und die Buildausführung übergeben. Das System generiert einen eindeutigen Namen für die Buildausführung. Mit der Option --name können Sie auf Wunsch einen Namen für Ihre Buildausführung angeben; dies kann nützlich sein, weil der Name der Buildausführung benötigt wird, um Details über die Buildausführung abzurufen. Im folgenden Beispiel wird der Name der Buildausführung vom System automatisch generiert.

ibmcloud ce buildrun submit --build tutorial-build

Beispielausgabe

Submitting build run 'tutorial-build-run-851026-090000000'...
Run 'ibmcloud ce buildrun get -n tutorial-build-run-851026-090000000' to check the build run status.
OK

Zeigen Sie zur Überprüfung des Status für die Buildausführung mit dem Befehl buildrun get ibmcloud ce buildrun get die Details der Buildausführung an.

ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000

Beispielausgabe

Getting build run 'tutorial-build-run-851026-090000000'...
[...]
OK

Name:          tutorial-build-run-851026-090000000
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m42s  
Created:       2021-03-14T14:31:21-05:00  

Summary:  Succeeded  
Status:   Succeeded  
Reason:   Succeeded  

Der Build ist abgeschlossen, wenn der Status Succeeded (Erfolgreich) lautet.

Falls im Zusammenhang mit der Buildausführung ein Problem auftritt, können Sie mit dem Befehl ibmcloud ce buildrun logs Protokolle über die Buildausführung anzeigen.

ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000

Beispielausgabe

Getting build run 'tutorial-build-run-851026-090000000'...
Getting instances of build run 'tutorial-build-run-851026-090000000'...
Getting logs for build run 'tutorial-build-run-851026-090000000'...
OK

tutorial-build-run-851026-090000000-7vlrw-pod-c9t6g/step-git-source-source-7tbwh:
{"level":"info","ts":1610378702.42616,"caller":"git/git.go:165","msg":"Successfully cloned https://github.com/IBM/CodeEngine @ 6b66f2bc3e1277c2e6475608a9c50335712116e0 (grafted,  HEAD, origin/main) in path /workspace/source"}
{"level":"info","ts":1610378703.5453625,"caller":"git/git.go:203","msg":"Successfully initialized and updated submodules in path /workspace/source"}
[...]

Aus dem Quellcode wurde mit der Buildstrategie für Buildpacks erfolgreich ein Container-Image erstellt.

Mit dem Container-Image arbeiten

Nachdem das Container-Image erstellt und das Image per Push-Operation an die konfigurierte Container-Registry-Position übertragen wurde, können Sie nun das Image in Code Engine bereitstellen. Sie können beispielsweise eine Code Engine-App erstellen, die das erstellte Image nutzt.

ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial

Beispielausgabe

Creating application 'tutorial-app'...
[...]

Weitere Schritte für Buildpacks

Weitere Informationen finden Sie unter Anwendungen bereitstellen.

Wird für Ihr Quellcodeprojekt eine Dockerfile verwendet? Führen Sie dieselben Schritte aus, geben Sie jedoch die Buildstrategie Dockerfile an, um ein Image für Ihre Anwendung oder Ihren Job zu erstellen. Weitere Informationen zur Dockerfile enthält der Abschnitt Dockerfile für Code Engine schreiben.

Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.