Docker Compose: Mengelola Aplikasi Multi-Container

Docker Compose adalah alat yang sangat berguna untuk mengelola aplikasi yang terdiri dari beberapa container. Dengan Docker Compose, kita dapat mendefinisikan konfigurasi aplikasi multi-container dalam satu file YAML, menjalankannya dengan satu perintah, dan mempermudah pengelolaan siklus hidup container. Artikel ini akan menjelaskan konsep dasar, cara kerja Docker Compose, dan bagaimana menggunakannya untuk membangun aplikasi multi-container.

Langkah-langkah Dasar Menggunakan Docker Compose

1. Instalasi Docker Compose
  • macOS dan Windows: Docker Compose biasanya sudah terinstal bersama Docker Desktop.
  • Linux: Instal Docker Compose dengan perintah berikut:
    • sudo apt-get update
    • sudo apt-get install docker-compose
  • Cek versi Docker Compose untuk memastikan instalasi:
    • docker-compose --version
2. Membuat File docker-compose.yml

File docker-compose.yml mendefinisikan konfigurasi aplikasi. Berikut adalah contoh file untuk aplikasi Node.js dan MongoDB:
version: "3.8"  
services:
app:
image: node:14
container_name: node-app
ports:
- "3000:3000"
volumes:
- ./app:/usr/src/app
working_dir: /usr/src/app
command: "npm start"
depends_on:
- mongo
mongo:
image: mongo:4.4
container_name: mongo-db
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db

volumes:
mongo_data:

Penjelasan:

  • depends_on: Menentukan ketergantungan antar container.
  • services: Mendefinisikan container aplikasi.
  • volumes: Menyimpan data secara persisten.
3. Menjalankan Aplikasi dengan Docker Compose
  • Menjalankan Semua Container:
    Jalankan perintah berikut untuk memulai semua container:
    • docker-compose up
    • Tambahkan -d untuk menjalankan di background: docker-compose up -d
  • Melihat Log:
    • docker-compose logs
  • Menghentikan Container:
    • docker-compose down
4. Menambah Network dan Volume

Anda dapat mendefinisikan network dan volume secara eksplisit.
Contoh Network:
networks:
my_network:
driver: bridge

Contoh Volume:
volumes:
app_data:
mongo_data:

5. Menggunakan Variabel

Gunakan file .env untuk menyimpan variabel. Contoh file .env:
NODE_PORT=3000
MONGO_PORT=27017

Gunakan variabel dalam docker-compose.yml:
services:
app:
ports:
- "${NODE_PORT}:3000"
mongo:
ports:
- "${MONGO_PORT}:27017"

6. Contoh Kasus: Aplikasi Web dengan PHP dan MySQL

Berikut adalah contoh file docker-compose.yml untuk aplikasi PHP dan MySQL:

version: "3.8"  
services:
php:
image: php:7.4-apache
container_name: php-app
ports:
- "8080:80"
volumes:
- ./php:/var/www/html
mysql:
image: mysql:5.7
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepassword
volumes:
- mysql_data:/var/lib/mysql

volumes:
mysql_data:

Langkah-Langkah:

  1. Buat folder php dan tambahkan file index.php di dalamnya:
    <?php echo "Hello, Docker Compose!"; ?>
  2. Jalankan perintah:
    docker-compose up -d
  3. Akses aplikasi di http://localhost:8080.
7. Manajemen Aplikasi
  • Menghapus Resource:
    • docker-compose down --volumes
  • Mengupdate Service:
    • docker-compose up -d --build