Exemples

Regardons le processus en faisant un léger zoom out. Voyons ce qu’il se passe durant la phase de build ainsi que dans la phase déploiement.

WordPress

Un wordpress est une application qui a besoin de services pour fonctionner.

  • L’upstream: c’est une archive délivrée par GitHub.

  • Le paquet: c’est le contenu de l’archive.

  • Plusieurs images se partagent un même volume (*):
    • une image web (nginx, apache) qui délivre le contenu de l’application.

    • une image CGI (phpfpm) qui interpréte le code côté serveur.

    • une image de cache pour optimiser les performances (redis, memcache).

    • une image de base de données (MySQL).

(*) Le volume peut-être local ou distant.

Dans ce cas précis, on aura préalablement construit des images spécifiques web, cgi, cache et de base de données. La configuration d’un wordpress faisant intervenir plusieurs briques fonctionnelles, la configuration de l’application devra se faire après le déploiement des images, une fois qu’elle aura été contextualisée (domaine, login, password, etc)

alternate text

Caddy, gitea, prometheus

Le service est un binaire qui contient le code applicatif. L’application expose un port de service.

  • L’upstream: c’est un binaire précompilé en language GO disponible sur Github.

  • Le paquet: on ne construit pas de paquet, on utilise le binaire fournit par l’upstream.

  • L’image:
    • une image contenant le binaire, sa configuration et son entrypoint.

    • ou une image générique, le binaire sera déployé à la volée dans une image standard de production (ubuntu, debian, alpine).

Dans cet exemple, on préfèrera utiliser une image générique ultra légère (type alpine) pour faire fonctionner le binaire. L’entrypoint, la configuration du service et le binaire seront ajoutés à la volée dans le conteneur. L’entrypoint initialisera le logiciel une fois le conteneur démarré.

alternate text

Mariadb

Mariadb est une base de données relationnelle qui s’installe via les dépôts de sa distribution

  • L’upstream: provient du cache apt de la distribution (ici debian ou ubuntu).

  • Le paquet: c’est un service qui s’installe via un paquet deb.

  • L’image: c’est une image spécifique construite et déployée dans la registry.

L’image contient son entrypoint qui initialise le service une fois le conteneur démarré.

Les tâches opérationnelles permettront de configurer le service une fois le contexte de l’application renseigné.

alternate text