Module Beginner

Creating Dockerfiles

Learn how to write Dockerfiles and build custom Docker images

Creating Dockerfiles

Dockerfile adalah script yang berisi instruksi untuk membuat Docker image.

Basic Dockerfile Structure

# Base image
FROM node:18-alpine

# Working directory
WORKDIR /app

# Copy package files
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose port
EXPOSE 3000

# Start command
CMD ["node", "server.js"]

Common Dockerfile Instructions

FROM

Menentukan base image.

FROM node:18-alpine
FROM python:3.11-slim
FROM ubuntu:22.04

WORKDIR

Menentukan working directory.

WORKDIR /app

COPY

Menyalin file dari host ke container.

COPY package.json .
COPY . /app

RUN

Menjalankan command saat build.

RUN npm install
RUN apt-get update && apt-get install -y curl

EXPOSE

Memberitahu Docker container akan listen ke port.

EXPOSE 3000
EXPOSE 8080

CMD vs ENTRYPOINT

CMD: Default command, bisa di-override.

CMD ["node", "server.js"]

ENTRYPOINT: Command utama, tidak bisa di-override.

ENTRYPOINT ["python"]
CMD ["app.py"]

Build Image

# Build dengan tag
docker build -t myapp:latest .

# Build dengan no cache
docker build --no-cache -t myapp:latest .

Multi-stage Build

Optimalkan image size:

# Build stage
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# Production stage
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

Best Practices

  1. Gunakan specific image tags (jangan latest)
  2. Minimize layers dengan menggabungkan RUN commands
  3. Gunakan .dockerignore
  4. Optimalkan layer caching
  5. Gunakan multi-stage builds untuk production