Docker memiliki cache, yang hebat, tetapi yang saya lihat di output "docker build" adalah:
---> Using cache
atau output dari perintah (yang menyiratkan itu tidak menggunakan cache).
Setelah satu langkah di Dockerfile saya (COPY), itu jelas tidak menggunakan cache. Tapi saya cukup yakin tidak ada yang berubah dalam folder yang disalin. (Ini aplikasi kami, dan saya mengalami case no-cache bahkan ketika saya menggunakan dua kali berturut-turut, misalnya.)
Apakah ada cara untuk membuat Docker memberi tahu saya apa yang menurutnya berubah?
Saya tahu Docker dulu memeriksa cap waktu untuk ini, tapi itu diperbaiki di Docker 1.8, dan saya menggunakan Docker 1.9.x di sini.
Dockerfile
FROM ubuntu:14.04
MAINTAINER me
COPY /app/ /app/
akan menunjukkan hal ini. Dan saya tidak akan memposting seluruh kode sumber dan infrastruktur saya.Jawaban:
Gunakan pencarian biner, dengan
.dockerignore
.Tambahkan setengah file Anda ke
.dockerignore
, dan bangun wadah. Jika menggunakan cache untukCOPY
langkah tersebut, maka Anda tahu file yang diubah berada di set yang Anda abaikan, kalau tidak Anda tahu itu ada di setengah lainnya. Ulangi tes ini dengan kumpulan file yang memiliki perubahan, hingga hanya satu file / folder.(Dear lazyweb: cari cara untuk memperpanjang Docker agar ini tidak terlalu menyakitkan!)
sumber