Docker & Kubernetes for Developers · Pelajaran

Build Multi-Tahap untuk Citra Produksi yang Ringkas

Kuasai Dockerfile multi-tahap untuk mengompilasi atau menggabungkan aplikasi dalam tahap build, lalu menyalin hanya artefaknya ke dalam citra runtime yang kecil.

Pelajaran 4 dari 413 langkah

Build Multi-Tahap untuk Citra Produksi yang Ringkas adalah pelajaran Docker & Kubernetes for Developers gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Docker & Kubernetes for Developers, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Docker & Kubernetes for Developers mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

The Fat Image Problem

A single-stage build often ships compilers, dev dependencies, and source code into production. The result is a large, slower-to-pull, larger-attack-surface image.

What Is a Multi-Stage Build

A multi-stage build uses several FROM statements in one Dockerfile. Earlier stages build artifacts; a final lean stage copies only what it needs to run.

A Go Multi-Stage Example

Compile in a Go image, then ship a tiny final image with just the binary.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app .

FROM alpine:3.20
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Copying From a Named Stage

The key line is COPY --from=build. It pulls the compiled app binary out of the build stage, leaving the Go toolchain behind.

A Node.js Multi-Stage Example

Install and build with dev deps, then copy only the production output.

FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/index.js"]

Choosing a Slim Base

Final stages should use minimal bases like alpine, -slim, or distroless. Smaller bases mean fewer packages and fewer vulnerabilities.

Distroless Images

Google distroless images contain only your app and its runtime, no shell or package manager. They are very small and hard to exploit interactively.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Targeting a Specific Stage

You can build only up to a named stage with --target, useful for running tests in CI.

docker build --target build -t myapp:test .

Caching Dependencies

Copy dependency manifests before the rest of the source. Then dependency installation is cached and only re-runs when the manifest changes.

COPY package*.json ./
RUN npm ci
COPY . .

Measuring the Win

Compare sizes before and after. Multi-stage builds commonly shrink images from hundreds of MB to tens of MB.

docker images myapp

Combining With .dockerignore

Add a .dockerignore so build context excludes node_modules, .git, and secrets, speeding builds and avoiding leaking files into images.

node_modules
.git
*.env

Quick Check

Test what you have learned.

Recap

You learned to split Dockerfiles into build and runtime stages, copy only artifacts with --from, pick slim or distroless bases, target stages, and combine with .dockerignore for lean production images.

Gratis untuk memulai

Belajar Docker & Kubernetes for Developers dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Build Multi-Tahap untuk Citra Produksi yang Ringkas” gratis?

Ya — teks lengkap “Build Multi-Tahap untuk Citra Produksi yang Ringkas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Docker & Kubernetes for Developers, upgrade ke CoddyKit PRO. Kursus Docker & Kubernetes for Developers mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Build Multi-Tahap untuk Citra Produksi yang Ringkas”?

Kuasai Dockerfile multi-tahap untuk mengompilasi atau menggabungkan aplikasi dalam tahap build, lalu menyalin hanya artefaknya ke dalam citra runtime yang kecil. Kamu berlatih Docker & Kubernetes for Developers dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Docker & Kubernetes for Developers?

Tidak diperlukan pengalaman sebelumnya. Docker & Kubernetes for Developers di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Build Multi-Tahap untuk Citra Produksi yang Ringkas” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Docker & Kubernetes for Developers ini?

Ya. Setiap pelajaran Docker & Kubernetes for Developers menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengontainerisasi Aplikasi Web
  2. Mengoptimalkan Image Docker
  3. Praktik Terbaik Keamanan dan Produksi
  4. Build Multi-Tahap untuk Citra Produksi yang Ringkas
← Kembali ke Docker & Kubernetes for Developers