Docker: Mongodb’u Docker ve Docker-Compose ile çalıştırma

Bu kılavuzda Mongodb’un docker ve docker compose ile yerel olarak nasıl çalıştırılacağını keşfedeceğiz.  Mongodb’u sunucunuza kurmadan yerel olarak çalıştırmak istiyorsanız veya Mongodb’un birden fazla sürümünü sorunsuz bir şekilde çalıştırmak istiyorsanız bu yararlı olabilir.

 

Önkoşullar

Takip etmek için aşağıdakilere sahip olduğunuzdan emin olun:

  1. Docker yüklü olmalı
  2. Docker compose yüklü olmalı
  3. Komut satırıyla ilgili temel bilgiler

1. Docker run komutunu kullanma

Amacımıza ulaşmak için docker run komutunu kullanacağız.  Mongodb’un istediğimiz sürümü mongo:5.0 en son Mongodb sürümüdür.

➜ docker run -d \
    --name my-mongodb \
    -p 27017:27017 \
    -e MONGO_INITDB_ROOT_USERNAME=citiizix \
    -e MONGO_INITDB_ROOT_PASSWORD=S3cret \
    mongo:5.0
Unable to find image 'mongo:5.0' locally
5.0: Pulling from library/mongo
7b1a6ab2e44d: Already exists
90eb44ebc60b: Pull complete
5085b59f2efb: Pull complete
c7499923d022: Pull complete
019496b6c44a: Pull complete
c0df4f407f69: Pull complete
351daa315b6c: Pull complete
557b07ecd9d7: Pull complete
a2dff157a5e3: Pull complete
07d83e88231b: Pull complete
Digest: sha256:07212fb304ea36b8c5a9e5694527f16deeb0b99f87fc60162dc15ab260bf8a2a
Status: Downloaded newer image for mongo:5.0
37c8bc5ba6ea6b4ed31f65d5f060d1963c0b3384fa438dcd23fc4170b2eeb28f

Yukarıdaki komutta:

  • -d, docker konteynerinin bağımsız bir işlem olarak çalışmasını bildirir.  Konteyneri arka planda çalıştırır ve konteyner kimliğini yazdırır
  • -p bağlantı noktası eşlemesi içindir.  Container'a, konteyner portunu harici olarak açığa çıkarması talimatını veriyoruz.  Konteyner bağlantı noktası 6379, ana bilgisayar bağlantı noktası 6379 ile eşlenir. Bu, hizmete localhost:6379 aracılığıyla erişilebileceği anlamına gelir.
  • Mongo:5.0 çalıştırdığımız görüntüyü tanımlar.  Mongo image sürüm 5.0’ı kullanıyoruz.
  • -e argümanı ortam değişkenleri içindir.  Sağlanan ortam değişkenleri, Mongo DB kök kullanıcısı ve parolasını ayarlamak için kullanılacaktır.

Konteynerimizin beklendiği gibi çalıştığını kontrol etmek için docker ps komutunu kullanın:

➜ docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED       STATUS       PORTS                                           NAMES
37c8bc5ba6ea   mongo:5.0   "docker-entrypoint.s…"   4 hours ago   Up 4 hours   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   my-mongodb

Benim durumumda konteyner my-<meta charset=”utf-8″>mongodb (ona verdiğimiz ad) olarak çalışıyor.  Etkileşimli olarak /bin/bash komutunu çalıştırırken docker exec komutunu kullanarak konteynere giriş yapabiliriz.  Burada ayrıca yukarıda belirttiğimiz kimlik bilgileri ile postgtres’e giriş yapıp versiyon kontrolü yapıyoruz.

➜ docker exec -it my-mongodb /bin/sh
# mongo
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c45a03a7-55a8-490d-aceb-f7b25fc75f57") }
MongoDB server version: 5.0.3
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
> db.version()
5.0.3

Kullanılmadığı zaman kabı temizlemeniz gerekiyorsa, şu komutu kullanarak kabı durdurabilir ve kaldırabilirsiniz:

docker stop my-<meta charset="utf-8">mongodb

# Removing
docker rm my-<meta charset="utf-8">mongodb

2. Docker-compose aracını kullanma

Docker-compose ile aynı işlevselliği elde edebiliriz.  Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlamaya ve çalıştırmaya yönelik bir araçtır.  Compose ile uygulamanızın hizmetlerini yapılandırmak için bir YAML dosyası kullanırsınız.

Docker Compose, hizmeti (bizim durumumuzda Mongodb), kullanılacak görüntü, varsayılan Dockerfile komutunu geçersiz kılan komut ve kullanıma sunulacak andport’lar gibi özelliklerle tanımlamanıza olanak tanır.

Yukarıdaki işlevselliğe ulaşmak için docker-compose’u nasıl kullanacağımız aşağıda açıklanmıştır.  Bunu docker-compose.yaml olarak kaydedin:

version: '3.9'

services:
  mongodb:
    image: mongo:5.0
    ports:
      - 27017:27017
    volumes:
      - ~/apps/mongo:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=citizix
      - MONGO_INITDB_ROOT_PASSWORD=S3cret

Now bring up the containers:

❯ docker-compose up -d
Creating tmp_mongodb_1 ... done

Komutlar:

  • up konteyneri çalıştırır
  • -d müstakil moda alır

ps komutunu kullanarak kapsayıcı işlemlerini doğrulayın:

➜ docker-compose ps
    Name                  Command             State                      Ports
--------------------------------------------------------------------------------------------------
tmp_mongodb_1   docker-entrypoint.sh mongod   Up      0.0.0.0:27017->27017/tcp,:::27017->27017/tcp

Konteynerde oturum açmak ve mongodb’de oturum açmak için şunu kullanın:

➜ docker-compose exec mongodb /bin/sh
# mongo
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f481e3fd-1b45-480b-b43e-65686d3e2935") }
MongoDB server version: 5.0.3
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
> db.version()
5.0.3
>

 

Yazının orijinalini buradan okuyabilirsiniz.