web-dev-qa-db-fra.com

Est-il possible de mettre en cache les versions de docker à plusieurs étapes?

J'ai récemment opté pour des versions Docker à plusieurs étapes, et il ne semble pas y avoir de mise en cache sur les versions intermédiaires. Je ne sais pas si c'est une limitation de docker, quelque chose qui n'est tout simplement pas disponible ou si je fais quelque chose de mal.

Je déroule la version finale et je fais un --cache-from au début de la nouvelle version, mais il exécute toujours la version complète.

8
Matthew Goslett

Cela semble être une limitation de Docker lui-même et est décrit sous ce problème - https://github.com/moby/moby/issues/34715

La solution consiste à:

  1. Construisez les étapes intermédiaires avec un --target
  2. Poussez les images intermédiaires dans le registre
  3. Construisez l'image finale avec un --target et utilisez plusieurs chemins --cache-from, listant toutes les images intermédiaires et l'image finale
  4. Poussez l'image finale dans le registre
  5. Pour les versions ultérieures, tirez d'abord les images intermédiaires + finales du registre
17
Matthew Goslett