Belajar Docker Bagian 6
Eko Susilo Harjo September 29, 2024

Dalam pengembangan aplikasi modern, sering kali kita tidak hanya membutuhkan satu container untuk menjalankan aplikasi, tetapi beberapa container yang saling berinteraksi. Docker Compose hadir sebagai solusi untuk mengotomatisasi dan mengelola multi-container aplikasi dengan mudah. Pada artikel ini, kita akan membahas apa itu Docker Compose, cara menulis file docker-compose.yml
, serta contoh konkret penerapannya pada setup WordPress.
Apa itu Docker Compose?
Docker Compose adalah alat yang memungkinkan kita untuk mendefinisikan dan mengelola multi-container Docker dengan menggunakan file konfigurasi sederhana (docker-compose.yml
). Dengan Docker Compose, kita bisa mengatur seluruh environment aplikasi, menjalankan, menghentikan, dan bahkan scaling containers hanya dengan satu perintah.
Docker Compose sangat berguna untuk aplikasi yang membutuhkan lebih dari satu service, seperti database dan web server. Daripada menjalankan setiap container secara manual, Docker Compose mengotomatisasi proses tersebut sehingga lebih efisien dan terstruktur.
Menulis File docker-compose.yml
File docker-compose.yml
berfungsi sebagai blueprint atau cetak biru untuk aplikasi multi-container. Di dalam file ini, kita bisa mendefinisikan semua services (container), network, dan volumes yang dibutuhkan oleh aplikasi.
Berikut adalah contoh sederhana dari file docker-compose.yml
yang mendefinisikan dua service: web dan db.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
Pada file di atas, kita mendefinisikan dua container:
- web menggunakan image nginx, yang akan memetakan port 8080 di host ke port 80 di container.
- db menggunakan image mysql:5.7 dengan variabel environment untuk mendefinisikan password root MySQL.
Dengan file docker-compose.yml
seperti ini, Anda dapat menjalankan kedua container tersebut dengan satu perintah.
Membuat dan Menjalankan Multi-Container Aplikasi
Setelah file docker-compose.yml
selesai dibuat, Anda bisa menjalankan seluruh aplikasi (multi-container) hanya dengan perintah berikut:
docker-compose up
Perintah ini akan membuat dan menjalankan semua container yang didefinisikan dalam file docker-compose.yml
. Untuk menghentikan aplikasi, Anda bisa menggunakan:
docker-compose down
Perintah ini tidak hanya menghentikan, tetapi juga menghapus semua container yang terkait dengan aplikasi tersebut. Namun, jika Anda ingin mempertahankan volume dan network, perintah ini tetap menjaga data yang tersimpan di volume agar tidak hilang.
Scaling Containers
Salah satu fitur menarik dari Docker Compose adalah kemampuannya untuk scaling atau memperbanyak jumlah container untuk service tertentu. Misalnya, jika Anda ingin menjalankan lebih dari satu instance dari web server, Anda bisa menggunakan perintah:
docker-compose up --scale web=3
Dengan perintah ini, Docker Compose akan menjalankan tiga instance dari container web.
Studi Kasus: Setup WordPress dengan Docker Compose
Untuk lebih memahami bagaimana Docker Compose bekerja, mari kita lihat studi kasus sederhana: Setup WordPress dengan Docker Compose. WordPress membutuhkan dua container: satu untuk menjalankan aplikasi WordPress itu sendiri, dan satu lagi untuk database MySQL.
Berikut adalah contoh file docker-compose.yml
untuk WordPress:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: password
wordpress:
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
volumes:
db_data: {}
wordpress_data: {}
Penjelasan File:
- Service
db
: Menggunakan image mysql:5.7 dengan pengaturan environment untuk database seperti nama database, username, dan password. Volume db_data digunakan untuk menyimpan data MySQL secara persisten. - Service
wordpress
: Menggunakan image wordpressdan memetakan port 8080 di host ke port 80 di container. Variabel environment digunakan untuk menghubungkan container WordPress dengan container MySQL (db) di jaringan yang sama. - Volumes: Dua volume didefinisikan di sini, db_data untuk menyimpan data MySQL dan wordpress_data untuk menyimpan file WordPress.
Menjalankan Setup WordPress
Untuk menjalankan setup WordPress ini, cukup jalankan perintah berikut:
docker-compose up
Setelah perintah ini dijalankan, Anda bisa membuka browser dan mengakses WordPress di http://localhost:8080
. Jika Anda melihat halaman setup WordPress, berarti setup berhasil.
Docker Compose akan secara otomatis mengelola hubungan antara container wordpress dan db, sehingga Anda tidak perlu melakukan konfigurasi jaringan manual. Bahkan ketika container di-restart, data di MySQL dan WordPress tetap tersimpan berkat penggunaan volume.
Best Practices Menggunakan Docker Compose
- Gunakan Named Volumes: Selalu gunakan named volumes untuk memastikan data yang penting tetap tersimpan meskipun container dihapus. Seperti yang kita lakukan pada studi kasus di atas, named volumes memastikan data WordPress dan MySQL tetap ada.
- Scaling Services: Jika aplikasi membutuhkan performa yang lebih tinggi, gunakan fitur scaling untuk menambah container pada service yang dibutuhkan, seperti menambah lebih banyak container web.
- Jaga Ukuran File
docker-compose.yml
: Untuk aplikasi yang kompleks, bagi filedocker-compose.yml
menjadi beberapa file terpisah atau gunakandocker-compose.override.yml
untuk konfigurasi spesifik pada environment tertentu.
Kesimpulan
Docker Compose adalah alat yang powerful untuk mengelola aplikasi multi-container secara otomatis. Dengan menggunakan file docker-compose.yml
, Anda bisa menjalankan, menghentikan, dan menskalakan aplikasi hanya dengan beberapa perintah sederhana. Studi kasus setup WordPress di atas menunjukkan bagaimana Docker Compose bisa mempermudah deployment aplikasi dengan dependensi yang kompleks.
Mulailah eksplorasi lebih lanjut dengan Docker Compose dan lihat bagaimana alat ini dapat menyederhanakan workflow DevOps Anda!
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.