Published on

Docker Series — Episode 4: Docker Compose untuk Aplikasi Multi-Service

Authors
  • avatar
    Name
    Chalvin Wiradhika

Episode 4 — Docker Compose untuk Aplikasi Multi‑Service 🧩

Episode ini membahas Docker Compose — tool yang digunakan untuk mengelola beberapa container dalam satu definisi konfigurasi.

Compose mempermudah penggunaan stack yang terdiri dari beberapa service seperti:

  • API backend
  • database
  • cache
  • reverse proxy

🔹 Konsep Dasar Docker Compose

Docker Compose menggunakan file konfigurasi bernama docker-compose.yml.

Di dalamnya kita mendefinisikan:

  • daftar service
  • image atau build context
  • port mapping
  • environment variable
  • volume
  • network

🔹 Contoh Sederhana — Web App + Database

version: "3.9"

services:
  app:
    build: .
    container_name: demo-app
    ports:
      - "3000:3000"
    environment:
      - DB_HOST=db
      - DB_USER=user
      - DB_PASS=secret
    depends_on:
      - db

  db:
    image: postgres:15
    container_name: demo-db
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: appdb
    volumes:
      - dbdata:/var/lib/postgresql/data

volumes:
  dbdata:

🔹 Menjalankan Stack Compose

Menjalankan semua service:

docker compose up

Mode background:

docker compose up -d

Melihat daftar container Compose:

docker compose ps

Menghentikan semua service:

docker compose down

Menghapus volume saat shutdown:

docker compose down -v

🔹 Environment Variable dan .env

Compose mendukung penggunaan file .env.

Contoh:

APP_PORT=3000
DB_PASSWORD=secret123

Penggunaan di docker-compose.yml:

ports:
  - "${APP_PORT}:3000"

File .env tidak ikut masuk image sehingga aman untuk konfigurasi environment.


🔹 Volume untuk Penyimpanan Data Persisten

Volume digunakan untuk menyimpan data yang tidak boleh hilang saat container dihentikan.

Contoh:

volumes:
  - dbdata:/var/lib/postgresql/data

Volume akan tetap ada meskipun container dihapus.


🔹 Perbedaan docker run vs Docker Compose

docker rundocker compose
Fokus satu containerFokus multi‑service
Command‑basedFile‑based (declarative)
Kurang praktis untuk stack besarLebih mudah dikelola

Compose sangat bermanfaat untuk:

  • environment development
  • local testing
  • simulasi arsitektur microservice kecil

📌 Ringkasan Konsep Episode Ini

Pada episode ini kamu telah mempelajari:

  1. konsep Docker Compose
  2. struktur file docker-compose.yml
  3. menjalankan beberapa service sekaligus
  4. penggunaan volume & environment variable

Episode terakhir akan membahas:

👉 best practice, keamanan dasar, dan tips penggunaan Docker di lingkungan production

➡️ Episode #5: Best Practice, Keamanan, dan Optimasi Docker