Published on

Docker Series — Episode 3: Build Image dari Dockerfile

Authors
  • avatar
    Name
    Chalvin Wiradhika

Episode 3 — Build Image dari Dockerfile 🏗️

Pada episode ini kita membahas proses membangun image sendiri menggunakan Dockerfile. Topik ini merupakan fondasi utama dalam workflow container‑based deployment.


🔹 Apa Itu Dockerfile

Dockerfile adalah file teks yang berisi instruksi langkah‑demi‑langkah untuk membangun image.

Secara umum, di dalam Dockerfile berisi:

  • base image yang digunakan
  • dependency yang diinstall
  • file aplikasi yang disalin
  • perintah yang dijalankan saat container start

Contoh struktur sederhana:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

🔹 Penjelasan Instruksi Dasar

FROM

Menentukan base image.

Base image umum:

  • alpine
  • debian
  • ubuntu
  • node, golang, python, dll

WORKDIR

Menentukan direktori kerja di dalam container.

COPY

Menyalin file dari host ke dalam image.

RUN

Menjalankan perintah saat proses build image.

Biasanya digunakan untuk:

  • install dependency
  • konfigurasi paket

EXPOSE

Mendokumentasikan port aplikasi.

CMD

Menentukan perintah yang dijalankan ketika container start.

Berbeda dengan RUN yang dieksekusi saat build.


🔹 Build Image dari Dockerfile

Jalankan perintah berikut dari direktori project:

docker build -t myapp:1.0 .

Parameter penting:

  • -t → memberi nama + tag image
  • . → context build (folder aktif)

Melihat hasil image:

docker images

🔹 Menjalankan Image Hasil Build

docker run -d --name myapp-container -p 3000:3000 myapp:1.0

Cek log container:

docker logs -f myapp-container

🔹 Mengurangi Ukuran Image (Best Practice)

Beberapa guideline umum:

✔ gunakan base image minimal (yang ukurannya kecil)

✔ gabungkan beberapa instruksi dalam satu RUN

✔ hapus cache package manager setelah install

Contoh:

RUN apk add --no-cache curl bash

✔ gunakan .dockerignore (mirip .gitignore) untuk menghindari file yang ngga diperluin, contohnya:

  • node_modules
  • build cache

🔹 Contoh Dockerfile untuk Aplikasi Go

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

FROM alpine
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]

Teknik ini disebut multi‑stage build dan berguna untuk menghasilkan image yang lebih kecil.


📌 Ringkasan Konsep Utama

Pada episode ini kamu telah mempelajari:

  1. konsep Dockerfile
  2. instruksi dasar Dockerfile
  3. proses build image
  4. menjalankan container dari image hasil build
  5. best practice pengurangan ukuran image

Pada episode berikutnya kita masuk ke topik berikut:

👉 Docker Compose untuk aplikasi multi‑service

➡️ Episode #4: Docker Compose untuk Aplikasi Multi‑Service