EN: Read in English
Dunia D2: Resepi
Kek lapis: layer dan cache
Anda akan belajar: kenapa susunan baris resepi buat build jadi laju atau lambat.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Anda tukar satu perkataan dalam server.js. Build jalankan npm ci semula, dan anda tunggu dua minit. Kenapa?
Pilih satu jawapan.
Tengok
Laptop anda~/diary
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB
0 container (0 berjalan), 1 image, 0 loker.
Setiap baris resepi bakar satu layer (lapisan) (layer): Satu lapisan image; tukar satu, lapisan di atasnya dibuat semula., macam kek lapis. Docker simpan layer lama. Tukar style.css: hanya layernya dan layer di atasnya dibakar semula. Yang lain tulis CACHED.
Cuba
Resepi ini bakar npm ci semula selepas setiap perubahan kod. Alihkan baris supaya ia kekal CACHED bila server.js berubah.
Setiap baris resepi tambah satu lapisan kek. Susun baris dengan betul, kemudian bina.
Dockerfile (resepi)
FROM node:24-alpineWORKDIR /appCOPY . .COPY package.json package-lock.json ./RUN npm ci --omit=devCMD ["node", "server.js"]
Anda sudah bina sekali. Lepas ini, anda ubah server.js.
Kek (image anda)
CMD ["node", "server.js"]RUN npm ci --omit=devCOPY package.json package-lock.json ./COPY . .WORKDIR /appFROM node:24-alpine
Petunjuk
Salin fail pakej dan pasang dulu. Salin kod paling akhir.Teka
Sekarang susunannya bagus. Anda tambah satu pakej, jadi package.json berubah. Apa yang dibakar semula?
Pilih satu jawapan.
Cuba
Resepi ini sudah tersusun. Layernya ada dalam cache binaan (build cache): Layer yang disimpan dari bakar lepas. Langkah yang tak berubah diguna semula.. Tukar kod, bina api:1.1, dan kira baris CACHED.
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- api:1.08 layer · 244MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
Petunjuk
>> tambah satu baris di hujung fail.Semak
Tabiat cache yang bagus? Leret ke kanan untuk ya, ke kiri untuk “perlu dibaiki”.
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
Salin fail pakej dan pasang dulu, sebelum salin kod
Anda berjaya!
Kini anda boleh susun resepi supaya build semula kekal laju.
Nak tahu lebih (pilihan)
docker history api:1.1 senaraikan layer, yang terbaru di atas, dengan saiznya. Baris seperti ENV dan CMD tunjuk 0B: nota, bukan layer. Padam fail dalam layer kemudian cuma sembunyikannya. Image tak jadi kecil.
Misi sebenar
docker history api:1.1
0 daripada 3 langkah siap · Tanda anda disimpan.
English
You change one word in server.js. The build runs npm ci again, and you wait two minutes. Why?
Each recipe line bakes one layer, like kek lapis. Docker keeps old layers. Change style.css: only its layer and the layers on top bake again. The rest say CACHED.
This recipe bakes npm ci again after every code change. Move the lines so it stays CACHED when server.js changes.
Now the order is good. You add a package, so package.json changes. What bakes again?
This recipe is in good order. Its layers sit in the build cache. Change the code, build api:1.1, and count the CACHED lines.
>> adds a line to the end of a file.Good cache habit? Swipe right for yes, left for “needs work”.
You can now order a recipe so rebuilds stay fast.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Docker docs: Understanding image layers · Docker docs: Build cache · Docker docs: Optimize cache usage · docker history
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?