Docker Compose adalah tools yang memungkinkan Anda untuk mendefinisikan dan mengelola aplikasi Docker multi-container. Docker Compose menggunakan file YAML untuk mengonfigurasi layanan, jaringan, dan volume aplikasi.

Compose dapat digunakan untuk berbagai tujuan. Deploy aplikasi host tunggal, pengujian otomatis, dan pengembangan di komputer lokal adalah kasus penggunaan paling populer untuk Docker Compose.

Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menginstal versi terbaru dari Docker Compose di Debian 10, Buster. Kita juga akan menjelajahi konsep dan perintah Docker Compose dasar.

Prasyarat

Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:

Instal Docker Compose di Debian 10

Paket instalasi Docker Compose tersedia di repositori resmi Debian 10 tetapi mungkin tidak selalu merupakan versi terbaru. Pendekatan yang disarankan adalah menginstal Docker Compose dari repositori Dockit GitHub.

Pada saat penulisan artikel ini, versi stabil Docker Compose terbaru adalah versi 1.23.1. Sebelum download binary Compose, kunjungi halaman rilis repositori Compose di GitHub dan periksa apakah ada versi baru yang tersedia untuk diunduh.

Untuk menginstal Docker Compose di Debian 10, ikuti langkah-langkah berikut :

  1. Download Docker Compose binary ke direktori /usr/local/bin dengan perintah wget atau curl berikut:
    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. Setelah unduhan selesai, terapkan izin dengan chmod agar file dapat dieksekusi ke binary :
    sudo chmod +x /usr/local/bin/docker-compose
  3. Verifikasi instalasi dengan menjalankan perintah berikut yang akan menampilkan versi Compose  :
    docker-compose --version

    Outputnya akan terlihat seperti ini :

    docker-compose version 1.23.1, build b02f1306

Memulai dengan Docker Compose

Pada bagian ini, kami akan menunjukkan cara menggunakan Docker Compose untuk mengatur WordPress multi-container pada Debian 10.

Mulailah dengan membuat direktori project dan menavigasi ke dalamnya:

mkdir wordpress && cd wordpress

Jalankan teks editor dan buat file bernama docker-compose.yml di dalam direktori wordpress:

nano docker-compose.yml

Paste konten berikut ini ke dalam docker-compose.yml:

version: '3.7'

services:
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password_anda
      MYSQL_DATABASE: wordpress
  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password_anda
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

Analisis kode baris demi baris.

Di baris pertama, kita  menentukan versi Compose. Ada beberapa versi berbeda dari format file Compose dengan dukungan untuk rilis Docker tertentu.

Selanjutnya, kita mendefinisikan dua layanan, db dan wordpress. Setiap layanan menjalankan satu image dan akan membuat container yang terpisah ketika docker-compose dijalankan.

Layanan db :

  • Menggunakan image mysql:8.0. Jika image tidak ada di sistem, maka akan “pull” atau ditarik dari repositori publik Docker Hub.
  • Menggunakan kebijakan restart always yang akan memerintahkan container untuk selalu restart jika terjadi down.
  • Membuat volume bernama db_data untuk membuat database menjadi persisten.
  • Menentukan environment variables untuk image mysql:8.0.

Layanan wordpress:

  • Menggunakan image wordpress. Jika image tidak ada di sistem Anda Compose akan menariknya dari repositori publik Docker Hub.
  • Menggunakan kebijakan restart always yang akan memerintahkan container untuk selalu restart.
  • Mount direktori wp_data pada host ke /var/lib/mysql di dalam container.
  • Meneruskan port 80 yang terbuka pada container ke port 8080 pada mesin host.
  • Menentukan environment variables untuk image wordpress.
  • Instruksi depend_on menentukan ketergantungan antara kedua layanan. Dalam contoh ini, db akan dimulai sebelum wordpress.

Dari direktori project, mulai aplikasi WordPress dengan menjalankan perintah berikut:

docker-compose up

Outputnya akan terlihat seperti ini:

...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
db_1_99345602ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...

Docker Compose akan pull image, memulai container, dan membuat direktori wp_data di direktori proyek Anda.

Masukkan http://0.0.0.0:8080/ di browser, dan Anda akan melihat layar instalasi WordPress. Pada titik ini, aplikasi WordPress sedang aktif dan berjalan, dan Anda dapat mulai bekerja seperti biasa.

Untuk berhenti, tekan CTRL + C.

Anda juga dapat memulai Compose dalam mode detached (terpisah) dengan menggunakan opsi -d:

docker-compose up -d

Untuk melihat docker containers yang sedang beroperasi gunakan perintah berikut:

docker-compose ps
                 Name                               Command               State          Ports        
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99345602ac7e          docker-entrypoint.sh --def ...   Up      3306/tcp, 33060/tcp 
wordpress_app_wordpress_1_a428d8408817   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp 

Untuk menghentikan layanan ketika Compose berjalan dalam mode terpisah, gunakan:

docker-compose stop

Jika Anda ingin menghapus container seluruhnya gunakan opsi down :

docker-compose down

Menggunakan opsi --volumes juga akan menghapus volume data:

docker-compose down --volumes

Uninstall Docker Compose

Jika Anda perlu menghapus Docker Compose, Anda cukup menghapus direktori binary dengan mengetik:

sudo rm /usr/local/bin/docker-compose

Kesimpulan

Untuk menginstal Docker Compose pada Debian 10, cukup download file binary ke dalam direktori di sistem path dan buatlah file tersebut dapat dieksekusi.