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.
Ce dont vous avez besoin
Section intitulée « Ce dont vous avez besoin »- 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_TOKENouGITEA_TOKENexporté dans votre shell
Étape 1 — Créer le fichier de configuration
Section intitulée « Étape 1 — Créer le fichier de configuration »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.yaml — projet base-images (Gitea)
registry: provider: gitea url: https://gitea.example.com owner: myorg repo: base-images
sync: entries: - source: docker.io/library/alpine tag_regex: '^3\.\d+\.\d+$' keep_last: 3 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" version: "3.21.3"
retention: keep_last: 5 max_age_days: 90
status: {}Étape 2 — Créer le template Dockerfile
Section intitulée « Étape 2 — Créer le template Dockerfile »imglife utilise des templates Go pour générer les Dockerfiles. Créez le dossier référencé dans la configuration :
mkdir -p images/alpineCréez images/alpine/Dockerfile.tmpl :
ARG MIRROR_IMAGEFROM ${MIRROR_IMAGE}
# Paquets standards de l'organisationRUN apk add --no-cache ca-certificates tzdata curl
# Les labels OCI sont injectés automatiquement par imglife buildÉtape 3 — Exporter les credentials
Section intitulée « Étape 3 — Exporter les credentials »# Package Registry (GitLab ou Gitea)export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
# Registry OCI (si non configuré via docker login)export IMGLIFE_REGISTRY_EXAMPLE_COM_USERNAME=myuserexport IMGLIFE_REGISTRY_EXAMPLE_COM_PASSWORD=mypasswordVoir Credentials pour la convention de nommage complète.
Étape 4 — Synchroniser les miroirs
Section intitulée « Étape 4 — Synchroniser les miroirs »imglife syncimglife 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 :
imglife sync --dry-runimglife sync --list # afficher ce qui serait synchroniséÉtape 5 — Construire l’image de base
Section intitulée « Étape 5 — Construire l’image de base »imglife buildimglife 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>.
Étape 6 — Générer le rapport d’état
Section intitulée « Étape 6 — Générer le rapport d’état »imglife status --output README.mdProduit 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.
Étape 7 — Nettoyer les tags obsolètes
Section intitulée « Étape 7 — Nettoyer les tags obsolètes »imglife cleanup --dry-run # aperçu de ce qui serait suppriméimglife cleanup # appliquer la politique de rétentionAutomatiser avec CI/CD
Section intitulée « Automatiser avec CI/CD »Une fois chaque étape vérifiée localement, intégrez-les dans un pipeline CI. Voir les guides complets :
Prochaines étapes
Section intitulée « Prochaines étapes »- Connecter les projets applicatifs — une fois vos images de base publiées, les équipes applicatives peuvent utiliser
imglife checkpour vérifier que leur base est à jour etimglife registerpour 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.