Day 82 Prakerin Di Excellent ~ Docker Compose

 Hari ke-82 PKL: Docker Compose

Halo semuanya! Setelah kemarin kita membahas tentang Dockerfile, hari ini kita akan melangkah lebih jauh ke salah satu alat pendukung yang sangat berguna dalam Docker, yaitu Docker Compose. Jika kalian pernah berpikir, "Bagaimana cara menjalankan banyak container sekaligus dengan mudah?" maka Docker Compose adalah jawabannya. Yuk, kita bahas lebih detail!

Picture by: Code With and Blog


Apa Itu Docker Compose?

Docker Compose adalah alat yang digunakan untuk mendefinisikan dan menjalankan aplikasi multi-container. Dengan Docker Compose, kalian dapat membuat file konfigurasi bernama docker-compose.yml, yang mendeskripsikan bagaimana semua container dalam aplikasi kalian akan bekerja sama.

Docker Compose sangat membantu dalam situasi di mana aplikasi kalian membutuhkan beberapa service, seperti:

  • Aplikasi web dengan Nginx atau Apache.
  • Database seperti MySQL atau PostgreSQL.
  • Service tambahan seperti Redis atau RabbitMQ.

Kenapa Harus Docker Compose?

  1. Sederhana dan Konsisten: Semua konfigurasi untuk aplikasi kalian dapat didefinisikan dalam satu file docker-compose.yml.
  2. Mengelola Banyak Container: Jalankan, hentikan, atau restart beberapa container sekaligus dengan satu perintah.
  3. Cross-Environment: Konfigurasi kalian bisa digunakan di berbagai lingkungan tanpa perlu perubahan signifikan.
  4. Efisien untuk Tim: Dengan Docker Compose, tim kalian bisa memiliki pengaturan container yang seragam.

Cara Kerja Docker Compose

Docker Compose menggunakan tiga langkah sederhana:

  1. Mendefinisikan Layanan dalam File docker-compose.yml
    Semua layanan yang aplikasi kalian butuhkan didefinisikan dalam format YAML.

  2. Membangun dan Mengonfigurasi Layanan
    Docker Compose akan membaca file tersebut, membangun image, dan mempersiapkan container sesuai spesifikasi.

  3. Menjalankan Layanan
    Dengan satu perintah, semua container akan berjalan dan berkomunikasi sesuai kebutuhan.

Instalasi Docker Compose

Di Linux

Jalankan perintah berikut untuk menginstal Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version

Di Windows

Jika kalian menggunakan Docker Desktop, Docker Compose sudah terintegrasi. Pastikan Docker Desktop kalian sudah diinstal dan aktif.

Contoh docker-compose.yml

Berikut adalah contoh file docker-compose.yml sederhana untuk aplikasi berbasis Python Flask dengan database MySQL:

version: '3.8' services: web: build: . ports: - "5000:5000" volumes: - .:/code depends_on: - db db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: flaskdb MYSQL_USER: user MYSQL_PASSWORD: password

Penjelasan:

  1. version: Versi file Compose yang digunakan.
  2. services: Definisi layanan yang akan digunakan (dalam contoh ini: web dan db).
  3. web:
    • build: Build image dari Dockerfile di direktori saat ini.
    • ports: Mapping port 5000 di host ke port 5000 di container.
    • volumes: Sinkronisasi file direktori lokal ke container.
    • depends_on: Menentukan bahwa service web akan bergantung pada db.
  4. db:
    • image: Menggunakan image MySQL versi 8.0.
    • environment: Menentukan variabel lingkungan seperti password dan nama database.

Menjalankan Docker Compose

Setelah kalian memiliki file docker-compose.yml, berikut langkah-langkah untuk menjalankannya:

  1. Build Service

    docker-compose build
  2. Menjalankan Semua Layanan

    docker-compose up

    Gunakan flag -d untuk menjalankan layanan dalam mode background:

    docker-compose up -d
  3. Menghentikan Semua Layanan

    docker-compose down

Tips Menggunakan Docker Compose

  1. Gunakan Volume: Untuk menyimpan data persisten, gunakan volume di docker-compose.yml.
    Contoh:

    volumes: - db_data:/var/lib/mysql volumes: db_data:
  2. Gunakan File .env: Untuk menjaga keamanan, simpan konfigurasi sensitif seperti password di file .env dan referensikan dalam file Compose.
    Contoh .env:

    MYSQL_ROOT_PASSWORD=example MYSQL_DATABASE=flaskdb

    Dalam docker-compose.yml:

    environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE}
  3. Perbarui Versi Docker Compose: Selalu gunakan versi terbaru untuk memanfaatkan fitur baru dan peningkatan performa.

Penutup

Docker Compose adalah alat yang sangat penting untuk mengelola aplikasi multi-container. Dengan Compose, proses konfigurasi dan pengelolaan layanan menjadi jauh lebih mudah, terutama jika aplikasi kalian kompleks.

Mungkin cukup sekian untuk materi docker compose kali ini. Sampai jumpa di blog selanjutnya!

BABAI! 

Komentar

Postingan Populer