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
- Gunakan specific image tags (jangan latest)
- Minimize layers dengan menggabungkan RUN commands
- Gunakan .dockerignore
- Optimalkan layer caching
- Gunakan multi-stage builds untuk production