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 :Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
$ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow image:///usr/libexec/s2i
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énarioCopy to Clipboard Copied! Toggle word wrap Toggle overflow #!/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
#!/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énarioCopy to Clipboard Copied! Toggle word wrap Toggle overflow #!/bin/bash echo "Before running application" exec /usr/libexec/s2i/run
#!/bin/bash echo "Before running application" exec /usr/libexec/s2i/run