FAQ
Bisakah saya menjalankan beberapa kontainer MongoDB sekaligus dengan Docker?
Ya, Anda dapat menjalankan beberapa kontainer MongoDB selama masing-masing dipetakan ke port yang berbeda atau berjalan pada jaringan Docker terpisah untuk menghindari konflik.
Bagaimana cara mencadangkan data kontainer MongoDB di Docker?
Untuk mencadangkan data, Anda dapat menggunakan docker cp untuk mengekstrak file dari volume atau menggunakan mongodump di dalam kontainer. Volume persisten juga membantu mempertahankan data antar sesi.
Apakah aman menyimpan kata sandi MongoDB di file Docker Compose?
Tidak ideal. Sebagai gantinya, gunakan Docker Secrets atau file variabel lingkungan (.env) yang dikecualikan dari version control untuk mengelola kredensial sensitif secara aman.
Apakah MongoDB berjalan baik di Docker pada Windows?
Ya, MongoDB berjalan mulus di Docker di Windows, macOS, dan Linux, terutama saat menggunakan WSL 2 atau Docker Desktop untuk Windows demi memastikan kompatibilitas.
Bisakah saya menggunakan MongoDB dengan Docker di produksi?
Bisa, tetapi disarankan menyiapkan jaringan yang tepat, volume penyimpanan, autentikasi, dan pencadangan sebelum menggunakan MongoDB berbasis Docker di lingkungan produksi.
Bagaimana cara menghubungkan ke MongoDB di Docker dari kontainer lain?
Gunakan Docker Compose dan rujuk kontainer MongoDB berdasarkan nama layanannya sebagai hostname. Ini memungkinkan komunikasi antarlayanan pada jaringan yang sama.
Apakah saya perlu memasang MongoDB secara lokal jika menggunakan Docker?
Tidak. Docker menjalankan MongoDB dalam lingkungan terkontainer, jadi Anda tidak perlu memasang MongoDB langsung di mesin host Anda.
Bisakah saya menggunakan MongoDB Compass dengan instance MongoDB berbasis Docker?
Tentu. Cukup gunakan connection string yang benar (misalnya, mongodb://user:pass@localhost:27017) untuk terhubung dari MongoDB Compass ke kontainer lokal Anda.
Bagaimana cara memantau kinerja MongoDB di Docker?
Anda dapat mengintegrasikan alat seperti mongostat, mongotop, atau solusi pemantauan eksternal seperti Prometheus dan Grafana untuk pelacakan kinerja di dalam Docker.
Apakah data MongoDB saya akan persisten di dalam kontainer Docker?
Selama Anda memilih memetakan direktori kontainer ke volume di komputer host, data seharusnya bertahan tanpa masalah di antara pembaruan dan peluncuran.
Haruskah saya menggunakan Docker atau MongoDB Atlas?
Dalam banyak skenario, lebih baik menggunakan MongoDB Atlas karena fitur yang tersedia, harga, dan kemudahan penggunaannya, tetapi MongoDB melalui Docker juga merupakan opsi yang valid.
Apakah saya harus menggunakan Docker Desktop dengan MongoDB?
Docker Desktop biasanya mempermudah bekerja dengan Docker, tetapi bukan persyaratan. Sebagian besar distribusi Linux menyertakan Docker Engine, dan antarmuka lain seperti Rancher Desktop juga berfungsi.

Penulis
Nic Raboy
Nic Raboy adalah Pimpinan Developer Relations di MongoDB, memimpin tim pengembang Python, Java, C#, dan PHP yang membuat konten luar biasa untuk membantu para pengembang berhasil mengintegrasikan MongoDB ke dalam proyek mereka. Ia berpengalaman dengan Golang dan JavaScript dan sering menulis tentang berbagai petualangan pengembangannya.

Jadi Anda ingin melakukan self-hosting MongoDB atau mulai mencoba-coba di lingkungan lokal? Ada beberapa opsi untuk memulai jika Anda tidak ingin langsung menggunakan MongoDB Atlas, salah satunya adalah kontainer dengan Docker.
Menggunakan Docker adalah pilihan yang solid saat mengelola instance MongoDB karena tidak lebih dari satu menit untuk menyiapkannya serta mudah dirawat atau dipindahkan antar komputer host.
Dalam artikel ini, kita akan melihat beberapa pendekatan untuk melakukan deployment MongoDB dengan Docker dan membahas beberapa kiat praktis sepanjang proses. Anda juga dapat menonton video ini untuk ringkasan cepat topiknya.
Prasyarat
Untuk mengikuti tutorial ini, Anda perlu memasang Docker Engine di komputer Anda. Bisa di macOS, Windows, atau Linux. Anda tidak wajib memasang Docker Desktop, tetapi ini mungkin mempermudah pengalaman penggunaan Docker tergantung sistem operasi yang Anda gunakan.
Sebagai contoh, saya menggunakan Docker Engine melalui Rancher Desktop di macOS, dan berjalan dengan baik.
Untuk menyegarkan keahlian Docker Anda, ada baiknya membaca Docker for Beginners: A Practical Guide to Containers untuk mempelajari dasar-dasarnya.
Mengunduh Image Docker MongoDB
Sebelum Anda dapat mulai menjalankan MongoDB dalam kontainer Docker, Anda harus terlebih dahulu mengunduh image yang sesuai dengan kebutuhan. Dari baris perintah, jalankan perintah berikut:
Perintah di atas akan mengunduh image resmi MongoDB Community Edition (CE) dengan tag "latest".
Penting untuk dicatat bahwa mongodb/mongodb-community-server dan mongodb/mongodb-enterprise-server adalah image Docker resmi yang dikelola oleh MongoDB. Semua image lainnya dikelola oleh komunitas eksternal dan mungkin memberikan hasil yang berbeda atau tidak terduga.
Setelah image diunduh, kita dapat melihat opsi deployment.
Menjalankan MongoDB sebagai Kontainer Terisolasi dengan Perintah Docker Run
Cara tercepat untuk melakukan deployment MongoDB dengan Docker adalah cukup menggunakan perintah
docker rundengan beberapa parameter konfigurasi. Misalnya, Anda bisa menjalankan berikut ini dari baris perintah:Perintah di atas akan mengambil image kita dan mendeploy-nya sebagai kontainer bernama "MongoDB." Kontainer akan dipetakan port-nya, artinya host akan bisa berinteraksi dengannya pada port "27017." Informasi autentikasi root juga diatur pada contoh ini, namun bergantung kebutuhan deployment Anda, Anda bisa menggunakan Docker Secrets atau cara terlindungi lainnya untuk mengoper informasi sensitif.
Pada contoh di atas, semua data disimpan di dalam kontainer. Data MongoDB, termasuk database, koleksi, dan bahkan dokumen, hanya akan bertahan selama kontainer tersebut ada. Ini mungkin cocok untuk pengujian, tetapi sering kali Anda memerlukan persistensi data MongoDB yang andal di Docker. Untuk menanganinya, Anda harus membuat volume Docker menggunakan perintah berikut:
Untuk memberi tahu kontainer Anda agar menggunakan volume tersebut, Anda dapat mengubah perintah deployment agar terlihat seperti berikut:
Perhatikan bahwa kali ini, kita menentukan volume yang akan digunakan. Saat menggunakan volume, Anda dapat memastikan data Anda akan tetap ada bahkan setelah menghentikan atau memperbarui kontainer.
Dengan MongoDB berjalan di dalam kontainer Docker, Anda dapat terhubung menggunakan
mongodb://nraboy:password1234@localhost:27017sebagai connection string dari alat pilihan Anda.Menyertakan MongoDB dalam Stack atau Proyek Anda dengan Docker Compose
Jika Anda berencana menggunakan MongoDB dengan proyek tertentu yang juga dikelola dengan Docker, masuk akal untuk mengelola MongoDB dengan konfigurasi Docker Compose. Konfigurasi ini sering digunakan untuk melakukan sandboxing pada proyek Anda, yang sering disebut sebagai stack.
Buat file
docker-compose.ymldi suatu lokasi di komputer Anda dengan isi berikut:Konfigurasi di atas menggunakan informasi yang sudah kita lihat pada perintah baris tunggal. Seperti pada metode lainnya, di sini diasumsikan Anda sudah membuat volume
mongodbyang dikelola oleh Docker. Jika Anda perlu melakukannya, jalankan kembali perintah berikut:Tentu saja, Anda dapat mengelola volume Docker dengan cara yang paling masuk akal bagi Anda. Membuat volume hanyalah salah satu dari beberapa kemungkinan.
Dengan baris perintah berada pada direktori kerja yang sama dengan file
docker-compose.ymlAnda, jalankan perintah berikut:Perintah di atas akan menjalankan stack Anda dalam mode detached.
Anda dapat memvalidasi bahwa semuanya berfungsi dengan mencoba terhubung ke instance Anda menggunakan alat seperti MongoDB Compass, salah satu driver bahasa seperti Node.js, atau melalui MongoDB Shell.
Jika mengikuti contoh persis, connection string Anda akan berupa
mongodb://nraboy:password1234@localhost:27017, namun bergantung bagaimana Anda mengikuti langkah-langkahnya, ini bisa berbeda.Untuk mematikan instance MongoDB Anda, jalankan perintah berikut dari baris perintah dengan konfigurasi YAML di direktori kerja yang sama:
Karena kita menggunakan volume eksternal, saat Anda memulai ulang kontainer, semuanya akan tetap tersimpan.
Kesimpulan
Docker memudahkan bekerja dengan MongoDB di lingkungan self-hosted atau lokal. Anda tidak perlu khawatir tentang konfigurasi sistem operasi umum atau perbedaan pengalaman antar komputer. Anda akan mendapatkan pengalaman yang konsisten setiap saat.
Untuk melangkah lebih jauh, ada baiknya mempelajari cara membuat database di MongoDB.