Apa Itu Docker Compose? #

Dalam pengembangan aplikasi modern, sangat jarang sebuah aplikasi hanya terdiri dari satu komponen saja. Umumnya, sebuah aplikasi web membutuhkan backend service, database, cache, message broker, hingga reverse proxy. Mengelola semua container tersebut satu per satu dengan perintah docker run akan cepat menjadi rumit, sulit direproduksi, dan rawan kesalahan.

Di sinilah Docker Compose hadir.

Docker Compose adalah tool resmi dari Docker yang digunakan untuk mendefinisikan, mengonfigurasi, dan menjalankan aplikasi multi-container menggunakan sebuah file deklaratif bernama docker-compose.yml.

Dengan Docker Compose, kita bisa:

  • Menjalankan banyak container dengan satu perintah
  • Mendefinisikan relasi antar service secara jelas
  • Menyamakan environment development, testing, hingga staging
  • Mengurangi kompleksitas operasional saat development

Apa Itu Docker Compose Secara Konsep #

Docker Compose bekerja dengan pendekatan Infrastructure as Code (IaC) versi ringan untuk container.

Alih-alih menulis perintah panjang seperti:

  • docker run backend
  • docker run postgres
  • docker run redis

Docker Compose memungkinkan kita menuliskan semuanya dalam satu file YAML, lalu menjalankannya sekaligus.

Sederhananya:

  • Dockerfile → cara membangun satu image
  • Docker Compose → cara menjalankan banyak container sekaligus

Komponen Utama Docker Compose #

File docker-compose.yml #

Ini adalah jantung dari Docker Compose. Di sinilah seluruh definisi aplikasi berada.

Di dalamnya biasanya berisi:

  • Daftar service (container)
  • Image atau build context
  • Port mapping
  • Environment variable
  • Volume
  • Network
  • Dependency antar service

Service #

Service merepresentasikan satu container atau sekumpulan container identik.

Contoh service:

  • app → backend API
  • db → PostgreSQL / MySQL
  • cache → Redis

Setiap service:

  • Berjalan di container terpisah
  • Bisa saling berkomunikasi melalui network internal Docker

Network #

Secara default, Docker Compose akan membuat network bridge khusus untuk project tersebut.

Keuntungannya:

  • Service bisa saling mengakses menggunakan nama service sebagai hostname
  • Isolasi antar project terjaga

Contoh:

  • Backend bisa mengakses database melalui db:5432

Volume #

Volume digunakan untuk persistensi data.

Tanpa volume:

  • Data database akan hilang saat container dihapus

Dengan volume:

  • Data tetap aman walaupun container restart atau rebuild

Contoh Sederhana Docker Compose #

Bayangkan aplikasi sederhana:

  • Backend (Node.js / Go / Python)
  • Database PostgreSQL
version: "3.9"

services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=db
      - DB_PORT=5432
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: appdb
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Dengan konfigurasi ini:

  • Dua container dijalankan sekaligus
  • Backend otomatis bisa mengakses database
  • Data database persisten

Menjalankannya cukup dengan:

docker compose up

Perintah Dasar Docker Compose #

Beberapa perintah yang paling sering digunakan:

  • Menjalankan aplikasi:

    docker compose up
    
  • Menjalankan di background:

    docker compose up -d
    
  • Menghentikan dan menghapus container:

    docker compose down
    
  • Melihat status service:

    docker compose ps
    
  • Melihat log:

    docker compose logs -f
    
  • Rebuild image:

    docker compose build
    

Docker Compose vs docker run #

Aspekdocker runDocker Compose
Jumlah containerSatu per satuMulti-container
ReproducibleSulitSangat mudah
Dokumentasi setupMinimJelas & deklaratif
Cocok untukEksperimenDevelopment & testing

Docker Compose bukan pengganti Dockerfile, tetapi pelengkap.


Kapan Docker Compose Digunakan #

Docker Compose sangat ideal untuk:

  • Local development
  • Integration testing
  • Proof of concept
  • Demo aplikasi
  • Staging environment sederhana

Namun, Docker Compose bukan orchestrator skala besar.

Untuk production skala besar biasanya digunakan:

  • Kubernetes
  • Docker Swarm
  • Cloud managed service (ECS, GKE, AKS)

Meski begitu, banyak tim tetap memakai Docker Compose di production untuk aplikasi kecil atau internal.


Best Practice #

Beberapa praktik terbaik:

  1. Pisahkan concern

    • Satu service = satu tanggung jawab
  2. Gunakan .env file

    • Hindari hardcode credential
  3. Gunakan version terbaru

    • Umumnya 3.9
  4. Gunakan depends_on dengan bijak

    • Ingat: ini tidak menunggu service benar-benar siap
  5. Gunakan volume named

    • Lebih aman dan mudah dikelola
  6. Bedakan compose untuk environment berbeda

    • docker-compose.dev.yml
    • docker-compose.prod.yml

Penutup #

Docker Compose adalah alat yang sangat powerful untuk menyederhanakan pengelolaan aplikasi multi-container.

Dengan pendekatan deklaratif:

  • Setup menjadi konsisten
  • Developer onboarding lebih cepat
  • Error akibat konfigurasi manual berkurang drastis

Jika Dockerfile adalah fondasi sebuah container, maka Docker Compose adalah arsitek yang menyusun seluruh sistem agar berjalan bersama dengan rapi dan terstruktur.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact