Belajar Docker Dockerfile Dan Docker Compose

Momen ketika Docker benar-benar terasa berguna bagi saya adalah saat sebuah project butuh aplikasi + database + cache sekaligus — dengan Docker Compose, semuanya berjalan dengan satu perintah. Ada dua fondasi yang perlu dikuasai: Dockerfile untuk mendefinisikan aplikasi, dan Docker Compose untuk merangkai banyak service. Keduanya kita bahas di artikel ini.
1. Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
Build: docker build -t myapp .
2. Multi-Stage Build
# Stage 1: Build
FROM node:18 AS builder
WORKDIR /app
COPY package*.json .
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Production
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Hasil: image kecil karena hanya berisi file statis.
3. Docker Compose
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Jalankan: docker compose up -d
Kesimpulan
- Dockerfile — instruksi build image
- Multi-stage — pisahkan build dan production
- Docker Compose — orkestrasi multi-container
docker compose up -d— jalankan semua service

