Belajar Docker bagian 7
Eko Susilo Harjo September 30, 2024

Dalam lingkungan containerized, jaringan dan penyimpanan data memainkan peran penting agar aplikasi bisa berjalan dengan baik dan efisien. Docker Compose memungkinkan kita untuk mengelola kedua aspek ini secara mudah. Artikel ini akan membahas cara mengatur network dan volume di Docker Compose, serta memberikan beberapa best practices untuk memastikan performa dan keamanan yang optimal.
Mengatur Network di Docker Compose
Docker menyediakan beberapa mode jaringan yang berbeda untuk container, seperti bridge, host, dan overlay. Dalam Docker Compose, kita dapat mendefinisikan network sesuai kebutuhan aplikasi kita. Secara default, Docker Compose akan membuat satu network untuk semua service di dalam file docker-compose.yml
. Namun, kita juga bisa membuat network khusus untuk memisahkan atau menghubungkan container tertentu.
Contoh Pengaturan Network di Docker Compose
Berikut adalah contoh sederhana bagaimana mengatur network di Docker Compose:
version: '3'
services:
app:
image: myapp
networks:
- frontend
- backend
db:
image: mysql
networks:
- backend
networks:
frontend:
driver: bridge
backend:
driver: bridge
Dalam file docker-compose.yml
di atas:
- Service
app
terhubung ke dua network:frontend
danbackend
. - Service
db
hanya terhubung ke networkbackend
.
Dengan pengaturan ini, app
bisa berkomunikasi baik dengan container yang ada di network frontend
maupun backend
, tetapi db
hanya bisa berkomunikasi dengan container di network backend
. Penggunaan dua network ini membantu memisahkan komunikasi antara front-end dan back-end untuk alasan keamanan dan pengaturan yang lebih baik.
Network Driver
Ada beberapa tipe network driver yang bisa digunakan dalam Docker Compose:
- Bridge (default): Digunakan untuk menghubungkan container yang berjalan di host yang sama.
- Host: Container akan menggunakan jaringan host secara langsung, menghilangkan isolasi jaringan antar container.
- Overlay: Digunakan untuk menghubungkan container yang berjalan di beberapa host Docker (biasanya digunakan dalam lingkungan Docker Swarm).
Dalam contoh di atas, kita menggunakan driver bridge, yang merupakan default dan ideal untuk sebagian besar aplikasi yang berjalan di satu mesin.
Menggunakan dan Mengelola Volume untuk Data Persisten
Salah satu fitur unggulan Docker adalah kemampuannya untuk menggunakan volume agar data tetap persisten, meskipun container dihentikan atau dihapus. Volume memungkinkan container untuk menyimpan data di luar file system container, sehingga data tetap aman dan dapat diakses oleh container lain atau setelah restart.
Contoh Penggunaan Volume di Docker Compose
Berikut adalah contoh sederhana dari penggunaan volume di Docker Compose:
version: '3'
services:
web:
image: nginx
volumes:
- web_data:/usr/share/nginx/html
db:
image: mysql
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
web_data:
db_data:
Pada contoh ini, ada dua service yang menggunakan volume:
- Service
web
menggunakan volume web_data untuk menyimpan file di dalam direktori/usr/share/nginx/html
, yang merupakan direktori default untuk file HTML di Nginx. - Service
db
menggunakan volume db_data untuk menyimpan data MySQL di direktori/var/lib/mysql
.
Volume ini memastikan bahwa data tetap ada bahkan jika container dihentikan atau dihapus. Docker secara otomatis akan membuat volume baru jika volume yang disebutkan belum ada.
Membagikan Volume antar Container
Anda juga bisa menggunakan volume yang sama di beberapa container. Misalnya, jika Anda ingin dua container berbagi file yang sama:
version: '3'
services:
app:
image: myapp
volumes:
- shared_data:/app/data
worker:
image: myworker
volumes:
- shared_data:/worker/data
volumes:
shared_data:
Dalam contoh ini, service app
dan service worker
berbagi volume shared_data, yang memungkinkan keduanya mengakses dan menyimpan data di direktori yang sama. Ini sangat berguna untuk skenario di mana beberapa container perlu berbagi file atau data secara real-time.
Best Practices dalam Pengelolaan Networking dan Volume
Agar aplikasi Anda berjalan lebih aman dan efisien, ada beberapa best practices yang dapat diterapkan dalam pengelolaan networking dan volume di Docker Compose.
1. Pisahkan Network untuk Meningkatkan Keamanan
Untuk aplikasi yang memiliki beberapa komponen, seperti front-end dan back-end, sebaiknya gunakan network yang terpisah. Hal ini memastikan bahwa container front-end hanya dapat mengakses service yang relevan, sementara container lain (seperti database) hanya dapat diakses oleh container back-end.
2. Gunakan Named Volumes untuk Data Persisten
Selalu gunakan named volumes daripada bind mounts untuk data persisten, terutama untuk data penting seperti database. Named volumes dikelola oleh Docker dan lebih aman serta mudah dipindahkan di antara host Docker. Named volumes juga tidak bergantung pada file system host, yang membuatnya lebih portabel.
3. Gunakan Environment Variables untuk Konfigurasi
Saat menghubungkan container dengan network atau volume, gunakan environment variables untuk mengonfigurasi pengaturan seperti alamat IP, password, atau path file. Ini akan mempermudah pengelolaan dan memastikan bahwa aplikasi tetap fleksibel.
Contoh:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
Dengan cara ini, variabel DB_PASSWORD bisa didefinisikan di file .env
atau sebagai variabel environment pada sistem, sehingga lebih aman daripada menuliskan password secara langsung di file docker-compose.yml
.
4. Gunakan Volume untuk Menyimpan Data yang Sering Digunakan
Jika aplikasi Anda menghasilkan file atau data yang sering digunakan (seperti log, cache, atau data sementara), pertimbangkan untuk menggunakan volume untuk menyimpannya. Ini membantu menghindari penggunaan storage container yang berlebihan dan memastikan bahwa data tidak hilang saat container dihapus.
Kesimpulan
Docker Compose memberikan kemudahan dalam mengelola network dan volume untuk aplikasi multi-container. Dengan kemampuan untuk memisahkan jaringan antar container dan mengelola data persisten dengan volume, Docker Compose membantu memastikan aplikasi Anda berjalan lebih aman, efisien, dan mudah di-maintain. Dengan mengikuti best practices dalam pengelolaan networking dan volume, Anda bisa membangun arsitektur container yang scalable dan lebih handal.
Jadi, mulai sekarang, coba terapkan Docker Compose untuk pengelolaan aplikasi multi-container Anda, dan nikmati kemudahannya!
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.