4.3. Créer des images à partir du code source avec source-to-image
Source-to-image (S2I) est un cadre qui facilite l'écriture d'images qui prennent le code source d'une application en entrée et produisent une nouvelle image qui exécute l'application assemblée en sortie.
Le principal avantage de l'utilisation de S2I pour la construction d'images de conteneurs reproductibles est la facilité d'utilisation pour les développeurs. En tant qu'auteur d'une image de construction, vous devez comprendre deux concepts de base pour que vos images offrent les meilleures performances S2I : le processus de construction et les scripts S2I.
4.3.1. Comprendre le processus de construction de la source à l'image
Le processus de construction se compose des trois éléments fondamentaux suivants, qui sont combinés pour former une image finale du conteneur :
- Sources d'information
- Scripts source-image (S2I)
- Image du constructeur
S2I génère un Dockerfile avec l'image du constructeur comme première instruction FROM
. Le fichier Docker généré par S2I est ensuite transmis à Buildah.
4.3.2. Comment écrire des scripts source-image ?
Vous pouvez écrire des scripts source-image (S2I) dans n'importe quel langage de programmation, à condition que les scripts soient exécutables dans l'image du constructeur. S2I prend en charge plusieurs options fournissant des scripts assemble
/run
/save-artifacts
. Tous ces emplacements sont vérifiés lors de chaque compilation dans l'ordre suivant :
- Un script spécifié dans la configuration de la construction.
-
Un script trouvé dans le répertoire source de l'application
.s2i/bin
. -
Un script trouvé à l'URL de l'image par défaut avec l'étiquette
io.openshift.s2i.scripts-url
.
L'étiquette io.openshift.s2i.scripts-url
spécifiée dans l'image et le script spécifié dans une configuration de compilation peuvent prendre l'une des formes suivantes :
-
image:///path_to_scripts_dir
chemin absolu à l'intérieur de l'image vers un répertoire où se trouvent les scripts S2I. -
file:///path_to_scripts_dir
chemin d'accès : chemin relatif ou absolu vers un répertoire de l'hôte où se trouvent les scripts S2I. -
http(s)://path_to_scripts_dir
: URL d'un répertoire où se trouvent les scripts S2I.
Le scénario | Description |
---|---|
|
Le script
|
|
Le script |
|
Le script
Ces dépendances sont rassemblées dans un fichier |
|
Le script |
|
Le script
Note
L'emplacement suggéré pour placer l'application de test construite par votre script |
Example S2I scripts
Les exemples de scripts S2I suivants sont écrits en Bash. Chaque exemple suppose que le contenu de tar
est décompressé dans le répertoire /tmp/s2i
.
assemble
le scénario :
#!/bin/bash # restore build artifacts if [ "$(ls /tmp/s2i/artifacts/ 2>/dev/null)" ]; then mv /tmp/s2i/artifacts/* $HOME/. fi # move the application source mv /tmp/s2i/src $HOME/src # build application artifacts pushd ${HOME} make all # install the artifacts make install popd
run
le scénario :
#!/bin/bash # run the application /opt/application/run.sh
save-artifacts
le scénario :
#!/bin/bash pushd ${HOME} if [ -d deps ]; then # all deps contents to tar stream tar cf - deps fi popd
usage
le scénario :
#!/bin/bash # inform the user how to use the image cat <<EOF This is a S2I sample builder image, to use it, install https://github.com/openshift/source-to-image EOF
Ressources complémentaires