Come eseguire il debug della invalidazione della cache Docker?


15

Docker ha una cache, il che è fantastico, ma tutto ciò che vedo nell'output "docker build" è:

---> Using cache

o l'output del comando (il che implica che non sta usando la cache).

Dopo un passo nel mio Dockerfile (una COPIA), chiaramente non usa la cache. Ma sono abbastanza certo che non è cambiato nulla nella cartella che sta copiando. (È la nostra applicazione e mi imbatto nel caso della no-cache anche quando eseguo due volte consecutive, ad esempio.)

C'è un modo per convincere Docker a dirmi cosa pensa sia cambiato?

So che Docker era solito controllare i timestamp per questo, ma questo è stato corretto in Docker 1.8, e sono su Docker 1.9.x qui.


Pubblica il tuoDockerfile
Joel E Salas il

1
@JoelESalas: non capisco la tua richiesta. Qualcosa di così semplice come FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/lo dimostrerà. E non pubblicherò l'intero codice sorgente e l'infrastruttura.
Timmay,

1
Inoltre, anche se guardando il Dockerfile potrebbe aiutare, la domanda era come faccio io diagnosticare tali problemi. Non voglio che qualcun altro guardi la mia configurazione e mi dica la risposta. Voglio sapere quali strumenti esistono per aiutare a risolvere il problema.
Timmay,

Quanto sei sicuro che nulla stia cambiando in quella directory?
Joel E Salas,

Risposte:


4

Usa la ricerca binaria, con .dockerignore.

Aggiungi metà dei file a .dockerignoree crea il contenitore. Se utilizza la cache per il COPYpassaggio, allora sai che i file modificati sono nel set che hai ignorato, altrimenti sai che è nell'altra metà. Ripeti questo test con il set di file che ha la modifica, fino a quando non è solo un file / cartella.

(Caro pigro: cerca di estendere Docker per renderlo meno doloroso!)


2
Sembra un approccio accettabile per il debug di qualcosa a livello locale, grazie. Nel mio caso, attualmente sto provando a eseguire il debug della cache Docker in un ambiente CI e sono un po 'sconvolto dal fatto che non riesco a trovare un modo per rendere la Docker più dettagliata = /
elias
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.