Advertisement

Apa Itu Docker Compose dan Kapan Menggunakannya?

File:Docker (container engine) logo.svg


“Docker Compose? Emangnya docker hanya satu container aja nggak cukup?” – Orang yang baru kenal Docker.

Bayangin, kamu lagi bikin aplikasi keren yang butuh lebih dari satu container untuk jalan. Misalnya, aplikasi Node.js yang perlu database MySQL. Kalau pakai docker run satu-satu, siap-siap aja kepusingan.

Nah, di sini Docker Compose hadir untuk menyelamatkanmu. Docker Compose bikin kamu bisa mengelola aplikasi multi-container dengan mudah, hanya lewat satu file konfigurasi dan satu perintah.

Di artikel ini, kita bakal bahas:
  Apa itu Docker Compose dan kenapa kamu butuh itu
  Kapan sebaiknya kamu menggunakan Docker Compose
  Cara membuat dan menjalankan aplikasi multi-container
  Contoh kasus penggunaan Docker Compose
  Keuntungan Docker Compose yang bikin hidupmu lebih mudah!

Siap untuk jadi jagoan Docker Compose?  Let’s dive in!

1. Apa Itu Docker Compose?

 Docker Compose adalah tool untuk mendefinisikan dan menjalankan aplikasi multi-container dengan Docker. Biasanya, aplikasi modern butuh lebih dari satu service untuk berfungsi. Misalnya:

  • Frontend yang menggunakan Node.js atau React.
  • Backend yang menggunakan Django atau Express.
  • Database seperti MySQL atau MongoDB.
  • Cache seperti Redis.

Nah, Docker Compose memudahkan kamu untuk mengelola semua container ini dalam satu file konfigurasi. Tanpa Docker Compose, kamu harus menjalankan semua container satu per satu, setting port, link antar container, dan ini bisa jadi gak efisien dan ngebosenin.

Dengan Docker Compose, cukup buat file docker-compose.yml dan jalankan semua service sekaligus! Simpel dan cepat!

2. Kapan Kamu Harus Menggunakan Docker Compose?

Docker Compose sangat bermanfaat kalau aplikasi kamu melibatkan lebih dari satu container atau service. Berikut adalah beberapa kondisi saat kamu butuh Docker Compose:

a. Aplikasi yang Memiliki Banyak Layanan

Misalnya aplikasi yang membutuhkan beberapa container untuk menjalankan:

  • Backend (Node.js/Express)
  • Database (MySQL/PostgreSQL)
  • Cache (Redis)
  • Front-end (React, Angular, Vue)

Docker Compose bisa memudahkan kamu menjalankan semua layanan itu dalam satu perintah.

b. Pengembangan dengan Dependency Kompleks

Jika kamu bekerja dengan aplikasi yang memiliki dependency antar container, seperti database yang harus jalan dulu sebelum backend-nya, Docker Compose bisa memastikan urutan layanan dimulai dengan benar.

c. Test dan Continuous Integration (CI)

Docker Compose bisa digunakan untuk testing otomatis dan CI pipelines di mana kamu butuh mengatur environment yang identik di setiap testing atau deploy.

d. Pengelolaan Banyak Container dalam Development

Di lingkungan pengembangan, kamu sering kali bekerja dengan banyak container (misalnya, untuk berbagai aplikasi yang berhubungan). Docker Compose memungkinkan kamu mendefinisikan semuanya di satu tempat dan menjalankan semuanya dalam satu perintah!

e. Ketika Kamu Mau Kecepatan dalam Deployment

Mau aplikasi jalan instan tanpa ribet setting satu per satu? Docker Compose menyediakan cara untuk mengkonfigurasi dan menjalankan beberapa container sekaligus tanpa drama.

3. Struktur Dasar Docker Compose

Docker Compose bekerja dengan file docker-compose.yml yang berisi definisi tentang container, jaringan, volume, dan pengaturan lainnya. Berikut adalah contoh sederhana file docker-compose.yml:

version: '3'
services:
  web:
    image: node:14
    container_name: web-container
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    networks:
      - app-network

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  db-data:

Penjelasan:

  • version: '3' → Versi Docker Compose.
  • services → Mendefinisikan layanan atau container yang digunakan. Di sini ada dua: web dan db.
    • web menggunakan image Node.js.
    • db menggunakan image MySQL dan mengatur environment variables.
  • volumes → Data dari MySQL disimpan secara persisten.
  • networks → Menghubungkan container ke jaringan yang sama.

4. Menjalankan Aplikasi Multi-Container dengan Docker Compose

Sekarang, mari kita lihat bagaimana menjalankan aplikasi multi-container. Ambil contoh aplikasi Node.js yang terhubung ke MySQL.

Langkah 1: Persiapkan Dockerfile untuk Aplikasi Node.js

Buat Dockerfile di dalam folder aplikasi Node.js kamu. Berikut contohnya:

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Langkah 2: Buat file docker-compose.yml

Buat file docker-compose.yml di root project kamu dengan konten berikut:

version: '3'
services:
  web:
    build: .
    container_name: web-container
    ports:
      - "3000:3000"
    depends_on:
      - db
    networks:
      - app-network

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  db-data:

Langkah 3: Jalankan Docker Compose

Setelah semuanya siap, jalankan aplikasi dengan perintah berikut:

docker-compose up

Docker Compose akan:

  1. Membangun container web dari Dockerfile.
  2. Menjalankan db menggunakan image MySQL.
  3. Menghubungkan keduanya dalam jaringan yang sama.

Sekarang kamu punya aplikasi Node.js yang terhubung ke MySQL dalam satu perintah. Gampang kan?

5. Keuntungan Menggunakan Docker Compose

Docker Compose memberikan banyak keuntungan, seperti:

a. Mudah Mengelola Aplikasi Multi-Container

Dengan Docker Compose, kamu bisa mendefinisikan banyak container dalam satu file. Cukup dengan satu perintah, kamu bisa menjalankan semua layanan yang diperlukan untuk aplikasi kamu!

b. Pengaturan yang Konsisten di Berbagai Environment

Docker Compose memastikan aplikasi kamu berjalan konsisten, baik di development, testing, atau production. Semua pengaturan ada di file docker-compose.yml, jadi nggak perlu khawatir kalau aplikasi jalan beda di setiap environment.

c. Pengelolaan Volume yang Mudah

Docker Compose juga memudahkan untuk mengatur volume, seperti data aplikasi dan database, yang perlu dipertahankan meskipun container dihentikan atau dihapus.

d. Lebih Cepat untuk Development dan Testing

Kamu bisa menyiapkan environment untuk testing dan development dengan lebih cepat. Cukup dengan Docker Compose, kamu sudah bisa menyusun jaringan container, database, dan environment lainnya.

6. Troubleshooting dan Tips Docker Compose

 Masalah: “Container tidak mau start”
  Gunakan docker-compose logs untuk cek masalah yang muncul di container. Periksa apakah container db sudah berjalan sebelum web di-start.

 Masalah: “Jaringan tidak terhubung”
  Pastikan semua container menggunakan jaringan yang sama seperti yang didefinisikan dalam docker-compose.yml.

 Masalah: “Image tidak ditemukan”
  Pastikan kamu sudah pull image yang dibutuhkan atau jalankan docker-compose build jika menggunakan image custom.

7. Kesimpulan: Docker Compose Itu Penyelamat!

Docker Compose membuat aplikasi multi-container jadi mudah diatur.
Tidak perlu menjalankan container satu per satu – cukup jalankan satu perintah, dan semua service akan berjalan dengan baik.
Cocok digunakan untuk development, testing, dan CI/CD pipelines.
Bikin hidup jadi lebih simpel karena kamu hanya butuh satu file docker-compose.yml untuk mengelola semuanya.

 Sekarang giliran kamu!
Coba buat aplikasi multi-container dengan Docker Compose dan rasakan kemudahan serta kecepatannya!

 

Post a Comment

0 Comments