Lewati ke konten utama

Menjalankan MongoDB di Docker: Panduan Lengkap dengan Contoh

Panduan ini memandu Anda menjalankan MongoDB di Docker, mencakup deployment cepat lewat baris perintah dan konfigurasi lengkap Docker Compose. Sempurna untuk pengembang yang ingin self-host atau bereksperimen secara lokal tanpa langsung beralih ke hosting cloud.
· 5 mnt Baca

Jelajahi bersama AI

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:

docker pull mongodb/mongodb-community-server:latest

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 run dengan beberapa parameter konfigurasi. Misalnya, Anda bisa menjalankan berikut ini dari baris perintah:

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latest

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:

docker volume create mongodb

Untuk memberi tahu kontainer Anda agar menggunakan volume tersebut, Anda dapat mengubah perintah deployment agar terlihat seperti berikut:

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latest

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:27017 sebagai 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.yml di suatu lokasi di komputer Anda dengan isi berikut:

services:
    mongodb:
        image: mongodb/mongodb-community-server:latest
        container_name: mongodb
        restart: unless-stopped
        ports:
            - "27017:27017"
        volumes:
            - mongodb:/data/db
        environment:
            MONGO_INITDB_ROOT_USERNAME: nraboy
            MONGO_INITDB_ROOT_PASSWORD: password1234

volumes:
    mongodb:
        external: true

Konfigurasi di atas menggunakan informasi yang sudah kita lihat pada perintah baris tunggal. Seperti pada metode lainnya, di sini diasumsikan Anda sudah membuat volume mongodb yang dikelola oleh Docker. Jika Anda perlu melakukannya, jalankan kembali perintah berikut:

docker volume create mongodb

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.yml Anda, jalankan perintah berikut:

docker compose up -d

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:

docker compose down

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.

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.

Nic Raboy

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.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai