Génération d'applications à l'aide de packs de construction
Une génération, ou génération d'image, est un mécanisme que vous pouvez utiliser pour créer une image de conteneur à partir de votre code source. Code Engine prend en charge la génération à partir d'un Dockerfile et de Cloud Native Buildpacks.
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez et utilisez un projet.
Tous les utilisateurs Code Engine doivent avoir un compte de paiement à la carte. Les tutoriels peuvent entraîner des coûts. Utilisez l'estimateur de coût pour générer une estimation du coût en fonction de l'utilisation envisagée. Pour plus d'informations, voir Tarification Code Engine.
Configuration de l'accès au registre
La sortie de la génération étant une image stockée dans un registre de conteneur, vous devez configurer l'accès à un registre d'images pour Code Engine. Pour stocker une image dans
Docker Hub, créez l'accès au registre à l'aide de la commande ibmcloud ce secret create --format registry
. Dans l'exemple suivant, utilisez
dockerhub
comme nom d'accès au registre et spécifiez votre ID Docker Hub comme nom d'utilisateur. Pour le mot de passe Docker Hub, vous pouvez spécifier votre mot de passe Docker Hub ou un jeton d'accès.
ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password
Exemple de sortie
Creating registry secret 'dockerhub'...
OK
Pour plus d'informations, voir la documentation sur l'ajout d'un accès au registre.
Création d'une génération
Créez une génération contenant des informations sur le code source de votre application ou de votre travail. Les informations peuvent inclure l'emplacement et les informations d'accès du travail ou de l'application.
La commande ibmcloud ce build create
ne crée pas d'image, mais crée la configuration pour générer une image. La commande ibmcloud ce buildrun submit
fait référence à la configuration de génération pour créer une image. Les options que vous spécifiez dans la commande build create
ou build update
ne sont pas validées ou utilisées
pour créer une image tant que la commande buildrun submit
n'est pas exécutée. La configuration de génération permet plusieurs générations ultérieures d'une image, par exemple lorsque des modifications sont appliquées
au référentiel source.
Dans l'exemple suivant, pour créer la configuration de génération, utilisez la commande ibmcloud ce build create
. Utilisez tutorial-build
comme nom de génération et indiquez https://github.com/IBM/CodeEngine
comme emplacement du code source et /s2i-buildpacks
comme dossier de répertoire de contexte contenant votre source. Utilisez le secret de registre
dockerhub
créé précédemment pour l'accès au registre. Indiquez buildpacks
comme stratégie de génération pour compiler le code source et small
comme taille de génération.
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
Exemple de sortie
Creating build 'tutorial-build'...
OK
L'option size
indique la taille de la génération, qui détermine la quantité de ressources utilisées. Les valeurs valides sont small
, medium
, large
, xlarge
et xxlarge
.
size
reflète les exigences de génération pour le code source de votre application ou de votre travail. Si la génération échoue en raison d'un manque de mémoire ou d'espace disque, ou qu'elle n'est pas assez rapide, essayez de
passer à une taille plus grande. Une taille de génération plus importante signifie également que davantage de coeurs de mémoire et d'UC sont affectés au processus de génération. L'augmentation de cette taille peut probablement accélérer le
processus de génération, mais cette action augmente également le coût. Pour plus d'informations sur les générations, voir Conseils relatifs au traitement des incidents liés aux générations.
Soumission d'une exécution de génération
Maintenant que votre configuration de génération est créée, vous pouvez exécuter une génération reposant sur cette configuration à l'aide de la commande ibmcloud ce buildrun submit
.
Dans l'exemple suivant, faites référence à la configuration de génération tutorial-build
et soumettez l'exécution de génération. Le système génère un nom d'exécution de génération unique. Vous pouvez éventuellement fournir un
nom pour votre exécution de génération à l'aide de l'option --name
, ce qui peut être utile car le nom de l'exécution de génération est requis pour obtenir des détails sur cette dernière. Dans cet exemple, le système génère automatiquement
le nom de l'exécution de génération.
ibmcloud ce buildrun submit --build tutorial-build
Exemple de sortie
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
Pour vérifier le statut de l'exécution de génération, utilisez la commande buildrun get
ibmcloud ce buildrun get
pour afficher des
détails sur l'exécution de génération.
ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000
Exemple de sortie
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
La génération est terminée lorsque le statut est Succeeded
.
S'il y a un problème avec l'exécution de génération, utilisez la commande ibmcloud ce buildrun logs
pour afficher les journaux relatifs à l'exécution
de génération.
ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000
Exemple de sortie
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"}
[...]
Votre image de conteneur a été générée correctement à partir du code source en utilisant la stratégie de génération de packs de construction !
Utilisation de l'image de conteneur
Maintenant que votre image de conteneur a été générée et qu'elle a été envoyée dans l'emplacement de registre de conteneur configuré, vous pouvez la déployer dans Code Engine. Par exemple, vous pouvez créer une application Code Engine qui utilise l'image créée.
ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial
Exemple de sortie
Creating application 'tutorial-app'...
[...]
Etapes suivantes pour les packs de construction
Pour plus d'informations, voir Déploiement d'applications.
Votre projet de code source utilise un fichier Dockerfile ? Suivez les mêmes étapes, mais spécifiez la stratégie de génération Dockerfile
afin de générer une image pour votre application ou votre travail. Pour plus d'informations
sur les fichiers Dockerfile, voir Ecrire un fichier Dockerfile pour Code Engine.
Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.