0Pricing
Docker & DevOps Fundamentals · Pelajaran

Build Multi-Tahap untuk Efisiensi

Manfaatkan build multi-tahap untuk membuat image produksi yang lebih kecil dan aman dengan memisahkan dependensi build dan runtime.

Build Multi-Tahap untuk Efisiensi adalah pelajaran Docker & DevOps Fundamentals gratis di CoddyKit. Ini adalah pelajaran 1 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 & DevOps Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Pengantar Build Multi-Tahap

Selamat datang di optimasi Dockerfile tingkat lanjut! Hari ini, kita akan mempelajari build multi-tahap, teknik ampuh untuk membuat image Docker yang lebih kecil dan efisien.

Image yang lebih kecil menghasilkan pengunduhan yang lebih cepat, keamanan yang lebih baik, dan pemanfaatan sumber daya yang lebih optimal.

Build Multi-Tahap untuk Efisiensi — ilustrasi 1

Mengapa Ukuran Image yang Lebih Kecil Penting

Saat Anda membangun image Docker, image tersebut sering kali menyertakan alat dan dependensi yang hanya diperlukan selama proses build, bukan saat aplikasi akhir dijalankan.

  • Pengambilan lebih cepat: Image yang lebih kecil diunduh lebih cepat.
  • Lebih sedikit ruang disk: Menghemat penyimpanan di registri dan host.
  • Permukaan serangan lebih kecil: Lebih sedikit komponen berarti lebih sedikit potensi kerentanan.
  • Keamanan lebih baik: Image produksi Anda hanya berisi hal-hal yang penting.

Masalah Build Satu Tahap

Bayangkan aplikasi terkompilasi, seperti aplikasi yang ditulis dalam Go. Dockerfile satu tahap tradisional akan menyertakan seluruh kompiler Go dan dependensi pengembangan di dalam image akhir.

Hal ini membuat image akhir jauh lebih besar dari yang diperlukan, karena kompiler tidak diperlukan untuk menjalankan biner yang telah dikompilasi.

Contoh Satu Tahap (Go)

Berikut aplikasi Go sederhana dan Dockerfile yang membangunnya dalam satu tahap. Perhatikan bahwa lingkungan build disertakan dalam image akhir.

main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello from Single-Stage Docker!")
}

Dockerfile Satu Tahap

Dockerfile ini menggunakan `golang:1.21-alpine` sebagai basisnya. Setelah aplikasi dibangun, image basis yang besar ini, beserta semua alat build-nya, tetap berada di dalam image akhir.

FROM golang:1.21-alpine
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go
EXPOSE 8080
CMD ["./myapp"]

Anatomi Build Multi-Tahap

Build multi-tahap mengatasi masalah ini dengan memungkinkan Anda mendefinisikan beberapa instruksi `FROM` dalam satu Dockerfile. Setiap `FROM` memulai tahapan build baru.

  • Gunakan kata kunci AS untuk memberi nama tahapan (misalnya, FROM golang:1.21-alpine AS builder).
  • Selanjutnya, Anda dapat menyalin artefak dari tahapan sebelumnya menggunakan COPY --from=<stage_name>.

Hanya tahapan terakhir yang disimpan sebagai image.

Struktur Multi-Tahap

Dockerfile multi-tahap biasanya memiliki setidaknya dua tahapan:

  • Tahap Build: Berisi semua alat dan kode sumber yang diperlukan untuk mengompilasi aplikasi Anda.
  • Tahap Runtime: Image basis minimal yang hanya menyertakan aplikasi terkompilasi dan dependensi runtime-nya.

Image perantara dari tahap build dibuang sehingga menghasilkan image akhir yang ringan.

Contoh Multi-Tahap (Go)

Mari kita tulis ulang Dockerfile aplikasi Go menggunakan pendekatan multi-tahap. Kita akan membangun aplikasi pada tahap pertama, lalu menyalin hanya biner yang telah dikompilasi ke image basis `alpine` yang jauh lebih kecil.

# Stage 1: Build the application
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go

# Stage 2: Create the final lightweight image
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]

Menjalankan Build Multi-Tahap

Saat Anda membangun Dockerfile ini, Docker menjalankan setiap tahapan. Namun, hanya konten dari instruksi `FROM` terakhir, yang digabungkan dengan file yang disalin dari tahapan sebelumnya, yang membentuk image akhir.

Hasilnya adalah image yang jauh lebih kecil dibandingkan build satu tahap, karena kompiler Go dan alat build tidak disertakan.

Manfaat Build Multi-Tahap

Build multi-tahap sangat berguna untuk:

  • Bahasa Terkompilasi: Go, Java, C++, Rust.
  • Kerangka Kerja Frontend: Membangun aplikasi React/Angular dan menyajikan aset statis dengan Nginx.
  • Aplikasi Node.js: Menginstal `node_modules` pada tahap build, lalu hanya menyalin `package.json`, `package-lock.json`, dan aplikasi yang telah dibangun ke image runtime yang ramping.

Periksa Pengetahuan Anda

Manakah dari pilihan berikut yang merupakan manfaat utama penggunaan build Docker multi-tahap?

Rangkuman: Efisiensi Multi-Tahap

Anda telah mempelajari build Docker multi-tahap!

  • Build ini melibatkan beberapa instruksi FROM dalam satu Dockerfile.
  • Kata kunci AS memberi nama pada tahapan, sedangkan COPY --from= memindahkan artefak.
  • Manfaat utamanya adalah image akhir yang jauh lebih kecil, lebih aman, dan lebih efisien.

Teknik ini sangat penting untuk mengoptimalkan aplikasi Anda yang berjalan dalam kontainer. Selanjutnya, kita akan mempelajari pemanfaatan cache build!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Build Multi-Tahap untuk Efisiensi” gratis?

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

Apa yang akan aku pelajari di “Build Multi-Tahap untuk Efisiensi”?

Manfaatkan build multi-tahap untuk membuat image produksi yang lebih kecil dan aman dengan memisahkan dependensi build dan runtime. Kamu berlatih Docker & DevOps Fundamentals 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 & DevOps Fundamentals?

Tidak diperlukan pengalaman sebelumnya. Docker & DevOps Fundamentals 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 1 dari 4.

Berapa lama pelajaran “Build Multi-Tahap untuk Efisiensi” 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 & DevOps Fundamentals ini?

Ya. Setiap pelajaran Docker & DevOps Fundamentals 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. Build Multi-Tahap untuk Efisiensi
  2. Memanfaatkan Caching Build
  3. Praktik Terbaik Keamanan Dockerfile
  4. Meminimalkan Ukuran Image dengan Basis Slim dan Distroless
← Kembali ke Docker & DevOps Fundamentals