Docker

Docker Compose Lengkap dari Nol: Build, Deploy, dan Manage

Docker Compose Lengkap dari Nol: Build, Deploy, dan Manage

Jika Anda sudah memahami konsep dasar Docker, langkah selanjutnya adalah menguasai Docker Compose. Compose memungkinkan Anda menjalankan multi-container applications dengan satu file konfigurasi.

Tutorial lengkap Docker Compose untuk self-hosting tahun 2026

Instalasi Docker Compose

Docker Compose sudah termasuk dalam Docker Desktop. Untuk Linux server, install Docker Engine terlebih dahulu:

# Install Docker
curl -fsSL https://get.docker.com | sh

# Tambahkan user ke docker group
sudo usermod -aG docker $USER

# Logout dan login lagi, lalu verifikasi
docker compose version

Struktur File docker-compose.yml

Setiap proyek Docker Compose punya satu file YAML yang mendefinisikan semua service:

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  pgdata:

Networking di Docker Compose

Secara default, semua service dalam satu compose file berada di network yang sama. Container bisa saling akses menggunakan nama service sebagai hostname:

# Dalam aplikasi Python/Node.js
# Host: db (nama service)
# Port: 5432 (port default PostgreSQL)
DATABASE_URL=postgresql://admin:secret@db:5432/myapp

Managing Volume

Volume memastikan data persist meski container dihapus:

# Lihat semua volume
docker volume ls

# Backup volume
docker run --rm -v pgdata:/data -v $(pwd):/backup alpine tar czf /backup/pgdata-backup.tar.gz /data

# Restore volume
docker run --rm -v pgdata:/data -v $(pwd):/backup alpine tar xzf /backup/pgdata-backup.tar.gz -C /

Production Tips

  • Gunakan restart: unless-stopped agar container otomatis restart
  • Gunakan .env file untuk environment variables sensitif
  • Setup Caddy sebagai reverse proxy di depan container
  • Monitor resource usage dengan docker stats

Contoh Full Stack App

Berikut contoh compose untuk aplikasi full-stack dengan Caddy, Node.js, dan PostgreSQL. Lihat juga panduan self-hosting lengkap untuk konteks yang lebih luas.