Docker tiene un caché, lo cual es genial, pero todo lo que veo en el resultado de "construcción de docker" es:
---> Using cache
o la salida del comando (lo que implica que no está usando el caché).
Después de un paso en mi Dockerfile (una COPIA), claramente no usa el caché. Pero estoy bastante seguro de que nada ha cambiado en la carpeta que está copiando. (Es nuestra aplicación, y me encuentro con el caso sin caché, incluso cuando despliegue dos veces seguidas, por ejemplo).
¿Hay alguna forma de hacer que Docker me diga qué cree que cambió?
Sé que Docker solía verificar las marcas de tiempo para esto, pero eso se solucionó en Docker 1.8, y estoy en Docker 1.9.x aquí.
Dockerfile
FROM ubuntu:14.04
MAINTAINER me
COPY /app/ /app/
lo demostrará. Y no voy a publicar todo mi código fuente e infraestructura.Respuestas:
Utilice la búsqueda binaria, con
.dockerignore
.Agregue la mitad de sus archivos
.dockerignore
y cree el contenedor. Si usa el caché para elCOPY
paso, entonces sabe que los archivos modificados están en el conjunto que ignoró, de lo contrario, sabe que está en la otra mitad. Repita esta prueba con el conjunto de archivos que tiene el cambio, hasta que sea solo un archivo / carpeta.(Estimado lazyweb: ¡descubra alguna forma de extender Docker para que esto sea menos doloroso!)
fuente