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:
- Buat folder
php
dan tambahkan fileindex.php
di dalamnya:<?php echo "Hello, Docker Compose!"; ?>
- Jalankan perintah:
docker-compose up -d
- Akses aplikasi di http://localhost:8080.
7. Manajemen Aplikasi
- Menghapus Resource:
docker-compose down --volumes
- Mengupdate Service:
docker-compose up -d --build