12.3. Personnalisation des images source-image
Les images de construction source-image (S2I) comprennent des scripts d'assemblage et d'exécution, mais le comportement par défaut de ces scripts n'est pas adapté à tous les utilisateurs. Vous pouvez personnaliser le comportement d'un constructeur S2I qui inclut des scripts par défaut.
12.3.1. Invoquer des scripts intégrés dans une image
Les images de construction fournissent leur propre version des scripts source-image (S2I) qui couvrent les cas d'utilisation les plus courants. Si ces scripts ne répondent pas à vos besoins, S2I permet de les remplacer en ajoutant des scripts personnalisés dans le répertoire .s2i/bin
. Toutefois, ce faisant, vous remplacez complètement les scripts standard. Dans certains cas, le remplacement des scripts est acceptable, mais, dans d'autres scénarios, vous pouvez exécuter quelques commandes avant ou après les scripts tout en conservant la logique du script fourni dans l'image. Pour réutiliser les scripts standard, vous pouvez créer un script enveloppant qui exécute une logique personnalisée et délègue la suite du travail aux scripts par défaut de l'image.
Procédure
Regardez la valeur de l'étiquette
io.openshift.s2i.scripts-url
pour déterminer l'emplacement des scripts à l'intérieur de l'image du constructeur :$ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
Exemple de sortie
image:///usr/libexec/s2i
Vous avez inspecté l'image du constructeur
wildfly/wildfly-centos7
et découvert que les scripts se trouvent dans le répertoire/usr/libexec/s2i
.Créez un script qui comprend une invocation de l'un des scripts standard enveloppée dans d'autres commandes :
.s2i/bin/assemble
scénario#!/bin/bash echo "Before assembling" /usr/libexec/s2i/assemble rc=$? if [ $rc -eq 0 ]; then echo "After successful assembling" else echo "After failed assembling" fi exit $rc
Cet exemple montre un script d'assemblage personnalisé qui imprime le message, exécute le script d'assemblage standard à partir de l'image et imprime un autre message en fonction du code de sortie du script d'assemblage.
ImportantLorsque vous enveloppez le script d'exécution, vous devez utiliser
exec
pour l'invoquer afin de vous assurer que les signaux sont traités correctement. L'utilisation deexec
empêche également d'exécuter des commandes supplémentaires après avoir invoqué le script d'exécution de l'image par défaut..s2i/bin/run
scénario#!/bin/bash echo "Before running application" exec /usr/libexec/s2i/run