Ana içeriğe geç

Docker'da MongoDB Çalıştırma: Örneklerle Eksiksiz Rehber

Bu rehber, MongoDB’yi Docker’da çalıştırmayı; hızlı komut satırı dağıtımlarından tam Docker Compose yapılandırmalarına kadar adım adım açıklar. Buluta hemen geçmeden yerelde denemek veya kendi barındırma isteyen geliştiriciler için idealdir.
· 5 dk. oku

Yapay Zeka ile Keşfedin

Öyleyse MongoDB’yi kendiniz barındırmak ya da yerel ortamda denemeye başlamak mı istiyorsunuz? Doğrudan MongoDB Atlas’a geçiş yapmak istemiyorsanız birkaç başlangıç seçeneğiniz var; bunlardan biri de Docker ile konteyner kullanmaktır. 

MongoDB örneğinizi yönetirken Docker kullanmak mantıklı bir tercihtir; bir dakikadan kısa sürede kurulabilir, bakımı kolaydır ve ana bilgisayarlar arasında taşımak basittir.

Bu yazıda, Docker ile MongoDB dağıtmanın birkaç yolunu görecek ve yol boyunca bazı ipuçlarını keşfedeceğiz. Konuya hızlı bir genel bakış için şu videoya da göz atabilirsiniz.

Önkoşullar

Bu eğitimi adım adım takip edebilmek için bilgisayarınızda Docker Engine kurulu olmalıdır. Bu macOS, Windows veya Linux olabilir. Açıkça Docker Desktop’a ihtiyacınız yoktur, ancak kullandığınız işletim sistemine bağlı olarak Docker deneyiminizi kolaylaştırabilir. 

Örneğin ben macOS’te Rancher Desktop üzerinden Docker Engine kullanıyorum ve sorunsuz çalışıyor.

Docker becerilerinizi tazelemek için, temellere yetişmek adına Yeni Başlayanlar için Docker: Kapsayıcılara Pratik Giriş içeriğine göz atmaya değer.

Bir MongoDB Docker İmajı İndirme

MongoDB’yi bir Docker konteynerinde çalıştırmaya başlamadan önce, ihtiyaçlarınızı karşılayan bir imaj indirmeniz gerekir. Komut satırından aşağıdakini çalıştırın:

docker pull mongodb/mongodb-community-server:latest

Yukarıdaki komut, "latest" etiketiyle resmi MongoDB Community Edition (CE) imajını indirir. 

mongodb/mongodb-community-server ve mongodb/mongodb-enterprise-server imajlarının MongoDB tarafından bakım yapılan resmi Docker imajları olduğunu unutmamak önemlidir. Diğer tüm imajlar topluluk tarafından sağlanır ve farklı ya da beklenmedik sonuçlar verebilir.

İmajı indirdikten sonra dağıtım seçeneklerine bakabiliriz.

Docker Run Komutuyla Yalıtılmış Bir Konteyner Olarak MongoDB Çalıştırma

Docker ile MongoDB’yi dağıtmanın en hızlı yolu, birkaç yapılandırma parametresiyle docker run komutunu kullanmaktır. Örneğin, komut satırınızdan aşağıdakini çalıştırabilirsiniz:

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

Yukarıdaki komut, imajımızı alıp "MongoDB" adlı bir konteyner olarak dağıtır. Konteyner port eşlemeli olacaktır; yani ana makine 27017 portundan onunla iletişim kurabilecektir. Bu örnekte kök kimlik doğrulama bilgileri de ayarlanmıştır; ancak dağıtım ihtiyaçlarınıza bağlı olarak Docker Secrets veya hassas bilgileri iletmek için başka korumalı yöntemler kullanabilirsiniz.

Yukarıdaki örnekte verilerin tamamı konteyner içinde saklanır. Veritabanları, koleksiyonlar ve hatta belgeler dahil MongoDB verileri, yalnızca ilgili konteyner var olduğu sürece kalıcı olacaktır. Test için uygun olabilir; ancak çoğu zaman Docker’da MongoDB verileriniz için güvenilir kalıcılık istersiniz. Bunu sağlamak için aşağıdaki komutla bir Docker birimi (volume) oluşturmalısınız:

docker volume create mongodb

Konteynerinize bu birimi kullandırmak için dağıtım komutunuzu aşağıdaki gibi değiştirebilirsiniz:

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

Bu kez hangi birimin kullanılacağını belirttiğimize dikkat edin. Birim kullandığınızda, konteyneri sonlandırdıktan veya güncelledikten sonra bile verilerinizin var olacağından emin olabilirsiniz.

MongoDB bir Docker konteyneri içinde çalışırken, tercih ettiğiniz bir araçtan bağlantı dizesi olarak mongodb://nraboy:password1234@localhost:27017 ile bağlanabilirsiniz.

MongoDB’yi Yığınınıza veya Projenize Docker Compose ile Dahil Etme

MongoDB’yi yine Docker ile yönetilen belirli bir projeyle kullanmayı planlıyorsanız, MongoDB’yi bir Docker Compose yapılandırmasıyla yönetmek mantıklı olacaktır. Bu yapılandırmalar genellikle projelerinizi sınırlandırmak (sandbox) için kullanılır; sıkça "yığın" olarak anılır.

Bilgisayarınızda bir yerde aşağıdakilerle bir docker-compose.yml dosyası oluşturun:

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

Yukarıdaki yapılandırma, tek bir komut satırı komutunda gördüğümüz bilgileri kullanır. Diğer yöntemle olduğu gibi, burada da Docker tarafından yönetilecek mongodb adlı bir birimi önceden oluşturduğunuz varsayılır. Bunu yapmanız gerekiyorsa tekrar aşağıdaki komutu çalıştırın:

docker volume create mongodb

Elbette Docker birimlerinizi size en mantıklı gelen şekilde yönetebilirsiniz. Birim oluşturmak, olası seçeneklerden yalnızca biridir.

docker-compose.yml dosyanızla aynı çalışma dizinindeyken aşağıdaki komutu çalıştırın:

docker compose up -d

Yukarıdaki komut yığınınızı ayrık (detached) kipte başlatır. 

Her şeyin çalıştığını, MongoDB Compass gibi bir araçla, Node.js gibi dil sürücüleriyle veya MongoDB Shell üzerinden örneğinize bağlanmayı deneyerek doğrulayabilirsiniz. 

Örneği birebir takip ettiyseniz bağlantı dizeniz mongodb://nraboy:password1234@localhost:27017 olacaktır; ancak adımları nasıl takip ettiğinize bağlı olarak farklı olabilir.

MongoDB örneğinizi kapatmak için, YAML yapılandırmanızın bulunduğu aynı çalışma dizininde komut satırından aşağıdakini çalıştırın:

docker compose down

Harici bir birim kullandığımız için, konteynerinizi bir sonraki başlatışınızda her şey kalıcı olacaktır.

Sonuç

Docker, MongoDB ile kendi barındırdığınız ya da yerel bir ortamda çalışmayı kolaylaştırır. Genel işletim sistemi yapılandırmaları veya bilgisayardan bilgisayara alacağınız deneyimle ilgili endişelenmenize gerek kalmaz. Her seferinde tutarlı bir deneyim elde edersiniz. 

Bir sonraki adıma geçmek için, MongoDB’de nasıl veritabanı oluşturulacağını öğrenmeye değer.

FAQs

Docker ile aynı anda birden fazla MongoDB konteyneri çalıştırabilir miyim?

Evet, her biri farklı bir porta eşlenmiş veya çakışmaları önlemek için ayrı bir Docker ağında çalıştırılmış olduğu sürece aynı anda birden fazla MongoDB konteyneri çalıştırabilirsiniz.

Docker’daki bir MongoDB konteynerinin verilerini nasıl yedeklerim?

Veri yedeklemek için birimden dosyaları çıkarmak üzere docker cp komutunu kullanabilir veya konteyner içinde mongodump çalıştırabilirsiniz. Kalıcı birimler de oturumlar arasında verilerin korunmasına yardımcı olur.

MongoDB parolalarını Docker Compose dosyasında saklamak güvenli midir?

Pek ideal değildir. Bunun yerine Docker Secrets veya sürüm kontrolüne dahil edilmeyen ortam değişkeni dosyaları (.env) kullanarak hassas kimlik bilgilerini güvenli şekilde yönetin.

MongoDB, Windows’ta Docker içinde iyi çalışır mı?

Evet, özellikle Windows’ta uyumluluk için WSL 2 veya Docker Desktop kullandığınızda MongoDB, Windows, macOS ve Linux’ta Docker içinde sorunsuz çalışır.

MongoDB’yi üretimde Docker ile kullanabilir miyim?

Evet, ancak üretim ortamında Docker ile MongoDB kullanmadan önce uygun ağ, depolama birimleri, kimlik doğrulama ve yedeklemeleri yapılandırmanız önerilir.

Docker’daki başka bir konteynerden MongoDB’ye nasıl bağlanırım?

Docker Compose kullanın ve aynı ağdaki hizmetler arası iletişim için ana makine adı olarak MongoDB konteynerine hizmet adını verin.

Docker kullanıyorsam MongoDB’yi yerel olarak kurmam gerekir mi?

Hayır. Docker, MongoDB’yi konteynerize bir ortamda çalıştırır; bu nedenle MongoDB’yi ana makinenize doğrudan kurmanız gerekmez.

Docker’da çalıştırılan bir MongoDB örneğiyle MongoDB Compass kullanabilir miyim?

Kesinlikle. MongoDB Compass’tan yerel konteynerinize bağlanmak için doğru bağlantı dizesini kullanın (ör. mongodb://user:pass@localhost:27017).

Docker’da MongoDB’nin performansını nasıl izlerim?

Docker içinde performansı izlemek için mongostat, mongotop gibi araçları veya Prometheus ve Grafana gibi harici izleme çözümlerini entegre edebilirsiniz.

MongoDB verilerim Docker konteynerinde kalıcı olur mu?

Konteyner dizinini ana bilgisayarınızdaki bir birime eşlemeyi seçtiğiniz sürece, veriler güncellemeler ve başlatmalar arasında sorunsuzca kalıcı olur.

Docker mı yoksa MongoDB Atlas mı kullanmalıyım?

Çoğu senaryoda, sunduğu özellikler, fiyatlandırma ve kullanım kolaylığı nedeniyle MongoDB Atlas’ı kullanmak daha iyidir; ancak Docker üzerinden MongoDB de geçerli bir seçenektir.

MongoDB ile mutlaka Docker Desktop kullanmak zorunda mıyım?

Docker Desktop çoğu zaman Docker ile çalışmayı kolaylaştırır, ancak bir zorunluluk değildir. Çoğu Linux dağıtımı Docker Engine içerir ve Rancher Desktop gibi diğer arayüzler de işe yarar.

Nic Raboy

Yazar

Nic Raboy

Nic Raboy , MongoDB'de Geliştirici İlişkileri Lideridir ve MongoDB'yi projelerine dahil etmelerinde geliştiricilerin başarılı olmasına yardımcı olacak harika içerikler üreten Python, Java, C# ve PHP geliştiricilerinden oluşan bir ekibi yönetir. Golang ve JavaScript konusunda deneyime sahiptir ve sık sık geliştirme maceraları hakkında yazılar yazar.

Konular

İlgili