Aller au contenu

Démarrage rapide

Ce guide vous accompagne dans une configuration minimale mais concrète : miroir d’une image publique, construction d’une image de base, et génération d’un rapport d’état.

  • imglife installé
  • Un registry OCI privé (ex. registry.example.com)
  • Un projet GitLab ou une organisation Gitea pour stocker les métadonnées (le Package Registry)
  • Un GITLAB_TOKEN ou GITEA_TOKEN exporté dans votre shell

Créez imglife.yaml dans votre dépôt base-images :

# imglife.yaml — projet base-images (GitLab)
registry:
url: https://gitlab.example.com # votre instance GitLab
project_id: 42 # Paramètres > Général > ID du projet
sync:
entries:
- source: docker.io/library/alpine
tag_regex: '^3\.\d+\.\d+$' # tous les tags 3.x.y
keep_last: 3 # garder les 3 plus récents
target: registry.example.com/mirrors/alpine
build:
core_version: "1.0.0"
registry: registry.example.com/bases
images:
- name: alpine
folder: images/alpine
type: core
mirror_image: registry.example.com/mirrors/alpine
mirror_tag: "3.21.3" # tag miroir épinglé à utiliser comme FROM
version: "3.21.3"
retention:
keep_last: 5
max_age_days: 90
status: {}

imglife utilise des templates Go pour générer les Dockerfiles. Créez le dossier référencé dans la configuration :

Terminal window
mkdir -p images/alpine

Créez images/alpine/Dockerfile.tmpl :

ARG MIRROR_IMAGE
FROM ${MIRROR_IMAGE}
# Paquets standards de l'organisation
RUN apk add --no-cache ca-certificates tzdata curl
# Les labels OCI sont injectés automatiquement par imglife build
Terminal window
# Package Registry (GitLab ou Gitea)
export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
# Registry OCI (si non configuré via docker login)
export IMGLIFE_REGISTRY_EXAMPLE_COM_USERNAME=myuser
export IMGLIFE_REGISTRY_EXAMPLE_COM_PASSWORD=mypassword

Voir Credentials pour la convention de nommage complète.

Terminal window
imglife sync

imglife interroge Docker Hub pour tous les tags 3.x.y d’alpine, résout les 3 plus récents et les copie dans votre registry privé.

Aperçu sans écriture :

Terminal window
imglife sync --dry-run
imglife sync --list # afficher ce qui serait synchronisé
Terminal window
imglife build

imglife rend images/alpine/Dockerfile.tmpl, injecte les labels OCI et pousse l’image résultante sous registry.example.com/bases/alpine:3.21.3-core1.0.0.

Le format de tag par défaut est <mirror_tag>-core<core_version>.

Terminal window
imglife status --output README.md

Produit un fichier Markdown listant toutes vos images avec leurs dates EOL. Committez-le dans votre dépôt pour qu’il soit visible dans GitLab/Gitea.

Terminal window
imglife cleanup --dry-run # aperçu de ce qui serait supprimé
imglife cleanup # appliquer la politique de rétention

Une fois chaque étape vérifiée localement, intégrez-les dans un pipeline CI. Voir les guides complets :

  • Connecter les projets applicatifs — une fois vos images de base publiées, les équipes applicatives peuvent utiliser imglife check pour vérifier que leur base est à jour et imglife register pour enregistrer leurs builds. Voir Intégration CI applicatif.
  • Suivi EOL — ajoutez des entrées lifecycle: à votre configuration sync pour récupérer les données EOL depuis endoflife.date. Voir Suivi de fin de vie.
  • Multi-architecture — ajoutez platforms: [linux/amd64, linux/arm64] à vos images de build. Voir configuration build.