Docker Compose: Panduan Lengkap + Daftar Command Wajib

Docker Compose: Panduan Lengkap + Daftar Command Wajib

Waktu membaca menit

Kategori VPS

Diposting pada 17 Sep 2026

Menjalankan banyak container dengan docker run satu per satu itu gampang berantakan, belum lagi kalau harus atur network sendiri, atau satu container mati dan bikin seluruh aplikasi ikut error. Solusinya? Docker Compose. Apa itu?

Dengan Compose, kamu bisa mengatur aplikasi, database, network, dan storage sekaligus, tanpa menulis command manual satu per satu. Yuk, simak selengkapnya cara kerja, struktur file, sampai daftar command Docker Compose yang wajib kamu tahu di bawah ini.

Apa Itu Docker Compose?

Docker Compose adalah tool untuk mendefinisikan dan menjalankan aplikasi yang terdiri dari beberapa container menggunakan satu file YAML, yang secara modern umumnya disebut compose.yaml.

Kalau menggunakan docker run, kamu perlu menentukan konfigurasi setiap container secara manual. Ketika aplikasi sudah memiliki API, database, Redis, dan service lain, pendekatan ini mudah membuat konfigurasi berantakan.

Compose menggunakan pendekatan deklaratif. Kamu cukup mendeskripsikan kondisi aplikasi yang diinginkan dalam file YAML, lalu Docker Compose menangani proses pembuatan network, volume, image, hingga container.

Baca Juga: Kenapa VPS Lebih Cocok untuk Running Docker? Ini Jawabannya!

Ada tiga komponen utama yang perlu kamu pahami:

  • Services: container yang membentuk aplikasi, misalnya Node.js, PostgreSQL, atau Redis.
  • Networks: jalur komunikasi antarservice. Container dalam network Compose dapat saling menemukan berdasarkan nama service.
  • Volumes: tempat menyimpan data persisten agar data tidak ikut hilang ketika container dibuat ulang.

Saat menjalankan docker compose up, Compose membaca konfigurasi tersebut, mengambil atau membangun image, membuat network dan volume, kemudian menjalankan service. Sebaliknya, docker compose down digunakan untuk menghentikan dan membongkar resource yang dibuat Compose.

Satu hal penting untuk tutorial Docker terbaru: command yang digunakan sekarang adalah docker compose dengan spasi, bukan docker-compose dengan tanda hubung. Sintaks dengan tanda hubung merupakan command legacy dari Docker Compose versi lama.

Baca Juga: Trik Ampuh Unblock Reddit dengan Blockaway: Aman dan Gratis!

Docker Compose vs Docker Run: Bedanya Apa?

apa itu docker compose

Lalu, untuk apa Docker Compose kalau sudah ada docker run?

Perbedaan utamanya ada pada cara mengelola container. docker run bersifat imperatif: kamu memberikan instruksi satu per satu. Docker Compose bersifat deklaratif: kamu mendefinisikan kondisi aplikasi dalam YAML.

AspekDocker RunDocker Compose
ParadigmaImperatifDeklaratif
ScopeSatu container per commandMulti-container application
NetworkingPerlu diatur manualOtomatis melalui network Compose
ReproducibilityScript atau konfigurasi manualYAML yang dapat disimpan di version control
TeardownContainer dihapus satu per satudocker compose down

Untuk menjalankan container sederhana atau mencoba sebuah image secara cepat, docker run masih sangat berguna.

Namun, ketika aplikasi mulai bergantung pada beberapa service, Compose membuat pengelolaannya jauh lebih praktis. Developer lain cukup mendapatkan repository dan menjalankan docker compose up tanpa harus menebak-nebak command apa saja yang perlu dijalankan.

Bagaimana Cara Kerja Docker Compose?

Alur kerja Docker Compose sebenarnya cukup sederhana:

  1. Tulis file Compose
    Definisikan service, image atau build context, environment variable, network, volume, dan dependency.
  2. Jalankan docker compose up
    Compose membaca file YAML, mengambil atau membangun image, membuat network, menyiapkan volume, lalu menjalankan container.
  3. Kembangkan aplikasi
    Saat konfigurasi berubah, Compose dapat menggunakan cache dan hanya membuat ulang bagian yang memang membutuhkan perubahan.
  4. Hentikan dengan docker compose down
    Container dan network yang dibuat Compose akan dihentikan dan dibersihkan.

Compose juga bisa mengatur urutan startup menggunakan depends_on. Namun, ada jebakan yang cukup sering ditemui: depends_on dalam bentuk sederhana hanya memastikan container dependency sudah dimulai, bukan berarti service tersebut sudah siap menerima koneksi.

Misalnya, aplikasi Node.js langsung mencoba terhubung ke PostgreSQL ketika PostgreSQL baru saja menyala. Kondisi ini bisa menyebabkan aplikasi gagal startup.

Solusinya adalah menggunakan healthcheck dan condition: service_healthy. Dengan begitu, service aplikasi dapat menunggu database benar-benar dinyatakan sehat sebelum dijalankan.

Contoh Struktur compose.yaml

Berikut contoh sederhana aplikasi Node.js dengan PostgreSQL:

services:
  api:
    build: ./api
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://app:secret@db:5432/mydb
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16.3
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    volumes:
      - db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app -d mydb"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

volumes:
  db-data:

Pada contoh tersebut, api merupakan service aplikasi yang dibangun dari folder lokal ./api. Sementara itu, db menggunakan image PostgreSQL.

Perhatikan juga DATABASE_URL. Host database menggunakan nama db, bukan IP address. Compose menyediakan DNS internal sehingga service dapat berkomunikasi berdasarkan nama servicenya.

Bagian volumes digunakan agar data PostgreSQL tetap tersimpan meskipun container dihentikan atau dibuat ulang.

Struktur dan Contoh File docker-compose.yml

Dalam banyak tutorial lama, kamu mungkin lebih sering menemukan nama docker-compose.yml. File tersebut masih umum dijumpai, meskipun Compose modern juga menggunakan compose.yaml.

Struktur dasarnya terdiri dari beberapa key penting:

  • services: mendefinisikan container aplikasi.
  • environment: mengatur environment variable.
  • volumes: menyimpan data persisten.
  • networks: mengatur komunikasi dan isolasi antarservice.
  • depends_on: menentukan dependency antarservice.
  • healthcheck: menentukan apakah service sudah siap digunakan.

Compose secara default dapat membuat network untuk service yang didefinisikan di dalam project. Kamu juga dapat membuat network khusus jika membutuhkan kontrol komunikasi yang lebih spesifik.

Untuk volume, konsepnya penting terutama ketika kamu menjalankan database. Tanpa storage persisten, data yang tersimpan di filesystem container bisa ikut hilang ketika container tersebut dihapus.

Catatan untuk file baru: jangan lagi menambahkan key version: hanya karena mengikuti tutorial lama. Brief ini menggunakan Compose Specification modern yang tidak membutuhkan version field tersebut.

Manfaat Menggunakan Docker Compose

Development Environment Lebih Portable

Salah satu manfaat terbesar Compose adalah membuat environment development lebih mudah direplikasi.

Daripada setiap developer memasang database, Redis, dan dependency lain secara manual, konfigurasi dapat disimpan dalam repository. Setelah Docker tersedia, stack aplikasi bisa dijalankan melalui satu command.

Ini juga membantu mengurangi masalah klasik seperti “works on my machine”.

Testing Lebih Terisolasi

Compose dapat digunakan untuk membuat environment testing sementara.

Misalnya:

docker compose up -d
./run_tests
docker compose down

Test integration atau E2E bisa berjalan menggunakan service sungguhan seperti PostgreSQL dan Redis, bukan sekadar mock. Setelah testing selesai, environment dapat dibongkar kembali.

Multi-Service Lebih Mudah Dikelola

Mengatur networking, health check, restart policy, dependency, dan storage secara manual akan semakin merepotkan ketika jumlah container bertambah.

Compose menggabungkan konfigurasi tersebut dalam satu tempat. Karena itu, Compose sering menjadi langkah praktis sebelum kamu masuk ke kebutuhan container orchestration yang jauh lebih kompleks.

Daftar Command Docker Compose yang Wajib Diketahui

apa itu docker compose

Berikut beberapa command Docker Compose yang paling berguna untuk development maupun deployment.

Start dan Stop Service

CommandFungsi
docker compose up -dMenjalankan seluruh service di background
docker compose up -d --buildBuild image lalu menjalankan service
docker compose up -d --waitMenunggu service mencapai status healthy
docker compose downMenghentikan dan menghapus container serta network
docker compose down -vSama seperti down, sekaligus menghapus named volume

Hati-hati menggunakan docker compose down -v, terutama jika stack menyimpan database. Named volume akan ikut dihapus sehingga data di dalamnya bisa hilang.

Monitoring dan Debugging

CommandFungsi
docker compose psMelihat container yang sedang berjalan
docker compose ps -aMelihat semua container, termasuk yang berhenti
docker compose logs -fMemantau log semua service secara real-time
docker compose logs -f <service>Memantau log service tertentu
docker compose logs --tail=100Menampilkan 100 baris log terakhir

Ketika aplikasi tiba-tiba tidak bisa diakses, docker compose ps dan docker compose logs biasanya menjadi dua command pertama yang layak dicek.

Interaksi dengan Container

CommandFungsi
docker compose exec <service> shMembuka shell di container yang berjalan
docker compose exec -T <service> <command>Menjalankan command non-interaktif
docker compose run --rm <service> <command>Menjalankan container sementara dan menghapusnya setelah selesai

Command exec sangat berguna ketika kamu perlu mengecek filesystem, environment, atau menjalankan command tertentu langsung di dalam container.

Build dan Development

CommandFungsi
docker compose buildBuild ulang image service
docker compose build --no-cacheBuild tanpa menggunakan cache
docker compose watchMemantau perubahan dan melakukan sinkronisasi untuk development

Validasi Konfigurasi

Sebelum deployment, kamu juga bisa menjalankan:

docker compose config

Command ini membantu melihat hasil akhir konfigurasi YAML setelah variable dan konfigurasi terkait digabungkan. Dengan begitu, error konfigurasi bisa diketahui sebelum stack benar-benar dijalankan.

Untuk kebutuhan lanjutan, Compose juga menyediakan scaling sederhana:

docker compose up --scale <service>=3

Command tersebut menjalankan beberapa instance dari service yang sama.

Kesimpulan

Docker Compose memudahkan pengelolaan aplikasi yang terdiri dari banyak container tanpa harus menjalankan dan mengonfigurasi semuanya secara manual. Dengan satu file YAML, kamu bisa mendefinisikan service, network, volume, dependency, hingga health check dalam konfigurasi yang lebih mudah direproduksi.

Kalau kebutuhanmu sebatas development, testing, atau deployment aplikasi multi-container, Compose sudah menjadi tool yang praktis untuk memulai. Ketika stack tersebut akan dijalankan di server, kamu juga membutuhkan infrastruktur yang mampu menjalankan Docker secara stabil.

Untuk kebutuhan tersebut, VPS Murah dari IDwebhost bisa menjadi salah satu opsi yang relevan untuk menempatkan aplikasi Docker di server. Kamu dapat menyesuaikan resource VPS dengan kebutuhan container, database, dan service lain yang digunakan aplikasi. 

Dengan begitu, konfigurasi yang sudah kamu buat menggunakan Docker Compose bisa dibawa dari local environment menuju server dengan perubahan seminimal mungkin.