EN: Read in English
Dunia D2: Resepi
Binaan berbilang peringkat
Anda akan belajar: masak di satu peringkat dan bungkus hidangan yang siap sahaja.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Laman Kedai Kancil anda dibina dengan Node. Image satu peringkat anda 244MB, untuk satu laman HTML! Apa yang ambil ruang itu?
Pilih satu jawapan.
Tengok
Laptop anda~/kedai
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
binaan berbilang peringkat (multi-stage build): Masak di satu peringkat, bungkus di peringkat lain. Hanya hidangan siap masuk image akhir. ada dua dapur. Peringkat build memasak dengan Node. Peringkat akhir mula baru dari nginx. COPY --from=build bawa hidangan sahaja: dist/.
Cuba
Susun resepi dua peringkat ini.
Baris pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.
- FROM node:24-alpine AS build
- COPY --from=build /src/dist/ /usr/share/nginx/html/
- FROM nginx:1.30-alpine
- RUN npm run build
- RUN npm ci
Petunjuk
Setiap peringkat mula dengan FROM sendiri. Masak sebelum hidang.Cuba
Bina peringkat memasak sahaja sebagai kedai:build. Kemudian bina resepi penuh sebagai kedai:1.0. Bandingkan saiznya.
Laptop anda~/kedai
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
Petunjuk
--target build berhenti selepas peringkat bernama build.Teka
Adakah npm di dalam kedai:1.0?
Pilih satu jawapan.
Semak
Laptop anda~/kedai
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
which npm tak jumpa apa-apa dalam kedai:1.0. Di peringkat build, npm ada. Pelanggan tak pernah nampak dapur.
Anda berjaya!
Kini anda boleh masak di satu peringkat dan hantar hidangan sahaja.
Nak tahu lebih (pilihan)
Peringkat tanpa nama dipanggil ikut nombor: COPY --from=0. Nama lebih jelas. COPY --from juga boleh salin dari mana-mana image, contohnya --from=nginx:1.30-alpine. Kurang alat dalam image akhir juga bermaksud kurang lubang keselamatan.
Misi sebenar
docker images
0 daripada 3 langkah siap · Tanda anda disimpan.
English
Your Kedai Kancil page is built with Node. Your one-stage image is 244MB, for one HTML page! What takes the space?
A multi-stage build has two kitchens. The build stage cooks with Node. The last stage starts fresh from nginx. COPY --from=build carries over only the dish: dist/.
Put this two-stage recipe in order.
Build only the cooking stage as kedai:build. Then build the full recipe as kedai:1.0. Compare their sizes.
--target build stops after the stage called build.Is npm inside kedai:1.0?
which npm finds nothing in kedai:1.0. In the build stage, npm is there. Diners never see the kitchen.
You can now cook in one stage and ship only the dish.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Docker docs: Multi-stage builds · Docker docs: Multi-stage builds (concepts)
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?