Rechercher

4.3. Créer des images à partir du code source avec source-to-image

download PDF

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 :

  1. Un script spécifié dans la configuration de la construction.
  2. Un script trouvé dans le répertoire source de l'application .s2i/bin.
  3. 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_dirchemin absolu à l'intérieur de l'image vers un répertoire où se trouvent les scripts S2I.
  • file:///path_to_scripts_dirchemin 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.
Tableau 4.2. Scénarios S2I
Le scénarioDescription

assemble

Le script assemble construit les artefacts de l'application à partir d'une source et les place dans les répertoires appropriés à l'intérieur de l'image. Ce script est obligatoire. Le flux de travail pour ce script est le suivant :

  1. Optionnel : Restaurer les artefacts de construction. Si vous souhaitez prendre en charge les constructions incrémentielles, veillez à définir également save-artifacts.
  2. Placez la source d'application à l'endroit souhaité.
  3. Construire les artefacts de l'application.
  4. Installer les artefacts dans des endroits appropriés pour qu'ils fonctionnent.

run

Le script run exécute votre application. Ce script est nécessaire.

save-artifacts

Le script save-artifacts rassemble toutes les dépendances qui peuvent accélérer les processus de construction qui suivent. Ce script est facultatif. Par exemple :

  • Pour Ruby, gems installé par Bundler.
  • Pour Java, .m2 contents.

Ces dépendances sont rassemblées dans un fichier tar et transmises à la sortie standard.

usage

Le script usage vous permet d'informer l'utilisateur sur la manière d'utiliser correctement votre image. Ce script est facultatif.

test/run

Le script test/run vous permet de créer un processus pour vérifier si l'image fonctionne correctement. Ce script est facultatif. Le flux proposé pour ce processus est le suivant

  1. Construire l'image.
  2. Exécutez l'image pour vérifier le script usage.
  3. Exécutez s2i build pour vérifier le script assemble.
  4. Facultatif : Exécutez à nouveau s2i build pour vérifier que les scripts save-artifacts et assemble sauvegardent et restaurent les artefacts.
  5. Exécutez l'image pour vérifier que l'application de test fonctionne.
Note

L'emplacement suggéré pour placer l'application de test construite par votre script test/run est le répertoire test/test-app de votre référentiel d'images.

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

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.

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 leBlog 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.

© 2024 Red Hat, Inc.