3 votes

Comment mettre en cache les images extraites de docker hub dans le registre privé de docker ?

La première ligne de mon .gitab-ci.yml est le suivant :

image: gradle:5.0-jdk11

Cette image est 601mb et je dois constamment la tirer de docker hub à chaque invocation de ma construction.

Y a-t-il un moyen de stocker l'image sur le dépôt docker du projet dans Gitlab ? De sorte qu'elle y soit automatiquement placée la première fois que la construction est exécutée et qu'elle soit ensuite récupérée lors des invocations suivantes de la construction ?

1voto

djuarez Points 1069

Si votre runner Gitlab a déjà téléchargé l'image Docker, la prochaine fois qu'il en aura besoin, il téléchargera l'image locale au lieu de télécharger à nouveau l'image 601mB. C'est le comportement par défaut à moins que vous ne changiez comme dans https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work

Gardez à l'esprit que si l'image est supprimée des images locales de votre gitlab-runner, il devra la récupérer à partir de zéro.

0voto

VonC Points 414372

Cela devrait être décrit par la page " Cache des dépendances dans GitLab CI/CD ", déclarant votre image comme un artefact dans le cache (défini par cache:paths )

C'est parfois déroutant car le nom d'artefact ressemble à quelque chose qui n'est utile qu'en dehors du travail, comme pour télécharger une image finale.
Mais les artefacts sont également disponibles entre les étapes d'un pipeline.
Ainsi, si vous construisez votre application en téléchargeant tous les modules requis, vous pouvez les déclarer en tant qu'artefacts afin que chaque étape ultérieure puisse dépendre de leur présence.

Vérifiez également ce que votre Le répertoire de cache de Docker runner comprend .

Si le problème persiste, essayez d'utiliser un registre privé, comme dans le cas suivant numéro 41924 :

image: my-private-registry:5000/my-ci-image:latest

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X