Docker a un cache, ce qui est génial, mais tout ce que je vois dans la sortie "Docker Build" est soit:
---> Using cache
ou la sortie de la commande (ce qui implique qu'elle n'utilise pas le cache).
Après une étape dans mon Dockerfile (une COPIE), il n'utilise clairement pas le cache. Mais je suis pratiquement certain que rien n'a changé dans le dossier qu'il copie. (C'est notre application, et je rencontre le cas sans cache même lorsque je déploie deux fois de suite, par exemple.)
Existe-t-il un moyen pour que Docker me dise ce qu'il pense avoir changé?
Je sais que Docker vérifiait les horodatages pour cela, mais cela a été corrigé dans Docker 1.8, et je suis sur Docker 1.9.x ici.
Dockerfile
FROM ubuntu:14.04
MAINTAINER me
COPY /app/ /app/
cela le démontrera. Et je ne vais pas publier l'intégralité de mon code source et de mon infrastructure.Réponses:
Utilisez la recherche binaire, avec
.dockerignore
.Ajoutez la moitié de vos fichiers
.dockerignore
et créez le conteneur. S'il utilise le cache pour l'COPY
étape, vous savez que les fichiers modifiés se trouvent dans l'ensemble que vous avez ignoré, sinon vous savez qu'il se trouve dans l'autre moitié. Répétez ce test avec l'ensemble de fichiers qui a la modification, jusqu'à ce qu'il ne s'agisse que d'un fichier / dossier.(Cher lazyweb: trouvez un moyen d'étendre Docker pour rendre cela moins douloureux!)
la source