Como depurar a invalidação do cache do Docker?

9

O Docker tem um cache, o que é ótimo, mas tudo que vejo na saída "docker build" é:

---> Using cache

ou a saída do comando (o que implica que não está usando o cache).

Depois de um passo no meu Dockerfile (um COPY), ele claramente não usa o cache. Mas tenho certeza de que nada mudou na pasta que está sendo copiada. (É o nosso aplicativo, e eu corro para o caso no-cache, mesmo quando eu implantar duas vezes seguidas, por exemplo).

Existe alguma maneira de o Docker me dizer o que ele acha que mudou?

Eu sei que o Docker costumava verificar os timestamps para isso, mas isso foi corrigido no Docker 1.8, e eu estou no Docker 1.9.x aqui.

    
por Timmay 09.01.2016 / 02:14

1 resposta

2

Use a pesquisa binária, com .dockerignore .

Adicione metade dos seus arquivos a .dockerignore e crie o contêiner. Se ele usa o cache para a etapa COPY , você sabe que os arquivos alterados estão no conjunto que você ignorou, caso contrário, você sabe que está na outra metade. Repita este teste com o conjunto de arquivos que tem a alteração, até que seja apenas um arquivo / pasta.

(Caro lazyweb: descubra uma maneira de estender o Docker para tornar isso menos doloroso!)

    
por 12.01.2016 / 19:51

Tags