4.3. Création d’images à partir du code source avec source-à-image


La source à image (S2I) est un framework qui facilite l’écriture d’images qui prennent le code source de l’application comme 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 construire des images de conteneurs reproductibles est la facilité d’utilisation pour les développeurs. En tant qu’auteur d’images de constructeur, vous devez comprendre deux concepts de base afin que vos images fournissent les meilleures performances S2I, le processus de construction et les scripts S2I.

4.3.1. Comprendre le processus de création de source à image

Le processus de construction se compose des trois éléments fondamentaux suivants, qui sont combinés dans une image finale du conteneur:

  • Les sources
  • Scripts source à image (S2I)
  • Image du constructeur

Le S2I génère un Dockerfile avec l’image du constructeur comme première instruction FROM. Le Dockerfile généré par S2I est ensuite transmis à Buildah.

4.3.2. Comment écrire des scripts source à image

Il est possible d’écrire des scripts source à image (S2I) dans n’importe quel langage de programmation, tant que les scripts sont exécutables à l’intérieur de l’image du constructeur. Le S2I prend en charge plusieurs options fournissant des scripts assemble/run/save-artefacts. L’ensemble de ces emplacements sont vérifiés sur chaque construction dans l’ordre suivant:

  1. Le script spécifié dans la configuration de build.
  2. Le script trouvé dans le répertoire source de l’application .s2i/bin.
  3. 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 build 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 relatif ou absolu vers un répertoire sur l’hôte où se trouvent les scripts S2I.
  • HTTP(s)://path_to_scripts_dir: URL vers un répertoire où se trouvent les scripts S2I.
Expand
Tableau 4.2. Scripts S2I
Le scriptDescription

assembler

Le script assemble les artefacts de l’application à partir d’une source et les place dans des répertoires appropriés à l’intérieur de l’image. Ce script est requis. Le flux de travail de ce script est:

  1. Facultatif: Restaurer des artefacts de construction. Lorsque vous souhaitez prendre en charge les constructions incrémentielles, assurez-vous de définir également des objets de sauvegarde.
  2. Placez la source de l’application à l’emplacement souhaité.
  3. Construisez les artefacts de l’application.
  4. Installez les artefacts dans des endroits appropriés pour qu’ils puissent fonctionner.

courir

Le script d’exécution exécute votre application. Ce script est requis.

des objets de sauvegarde

Le script sauvegarde-artefacts rassemble toutes les dépendances qui peuvent accélérer les processus de construction qui suivent. Ce script est facultatif. À titre d’exemple:

  • Avec Ruby, gemmes installées par Bundler.
  • Le contenu de Java, .m2.

Ces dépendances sont rassemblées dans un fichier goudron et diffusées vers la sortie standard.

l’utilisation

Le script d’utilisation vous permet d’informer l’utilisateur comment utiliser correctement votre image. Ce script est facultatif.

essai / course

Le script test/exécution vous permet de créer un processus pour vérifier si l’image fonctionne correctement. Ce script est facultatif. Le déroulement proposé de ce processus est:

  1. Construisez l’image.
  2. Exécutez l’image pour vérifier le script d’utilisation.
  3. Exécutez s2i build pour vérifier le script assembler.
  4. Facultatif: Exécuter s2i à nouveau pour vérifier les sauvegardes-artefacts et assembler les scripts sauvegarder et restaurer la fonctionnalité des artefacts.
  5. Exécutez l’image pour vérifier que l’application de test fonctionne.
Note

L’emplacement suggéré pour mettre l’application de test construite par votre script test/exécution est le répertoire test/test-app dans votre référentiel d’images.

Exemples de scripts S2I

Les exemples de scripts S2I suivants sont écrits en Bash. Chaque exemple suppose que son contenu de goudron est déballé dans le répertoire /tmp/s2i.

assembler le script:

#!/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
Copy to Clipboard Toggle word wrap

exécutez le script:

#!/bin/bash

# run the application
/opt/application/run.sh
Copy to Clipboard Toggle word wrap

script de sauvegarde-artefacts:

#!/bin/bash

pushd ${HOME}
if [ -d deps ]; then
    # all deps contents to tar stream
    tar cf - deps
fi
popd
Copy to Clipboard Toggle word wrap

script d’utilisation:

#!/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
Copy to Clipboard Toggle word wrap

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat