برنامه نویسی

استقرار ماکت MongoDB با Docker (IP عمومی VPS و تأیید اعتبار کاربر مورد نیاز)

مقدمه

استقرار یک ماکت MongoDB با Docker به طور موثر یک سیستم پایگاه داده قوی ایجاد می کند و از در دسترس بودن بالا و تحمل گسل اطمینان می دهد. من می خواهم مراحل مفصل را بر اساس تجربه دنیای واقعی خود در زیر به اشتراک بگذارم.

بنابراین روز دیگر ، من با استفاده از Nestjs + Prisma + MongoDB روی یک پروژه کار می کردم و معلوم شد که Prisma برای کار صحیح به یک ماکت نیاز دارد.

مراحل استقرار

  1. ساختار دایرکتوری ایجاد کنید

    دایرکتوری های لازم را برای داده ها و پیکربندی آماده کنید:

    mkdir -p mongodb-replicaset/data/{primary,secondary1,secondary2}
    cd mongodb-replicaset
    
    
  2. برای احراز هویت یک کلید کلید ایجاد کنید

    Keyfile ارتباط ایمن بین گره ها را تضمین می کند.

    mkdir -p mongodb-replicaset/keyfile
    openssl rand -base64 756 > keyfile/mongodb-keyfile
    chmod 400 keyfile/mongodb-keyfile
    sudo chown 999:999 keyfile/mongodb-keyfile
    
    
  3. یک فایل آهنگسازی Docker ایجاد کنید

    برای تنظیم مجدد ماکت: از پیکربندی آهنگسازی Docker زیر استفاده کنید:

    version: '3.8'
    
    services:
      mongo-primary:
        image: mongo:latest
        container_name: mongo-primary
        command: mongod --bind_ip_all --replSet rs0 --port 27017 --auth --keyFile /data/keyfile/mongodb-keyfile
        ports:
          - "27017:27017"
        volumes:
          - ./data/primary:/data/db
          - ./keyfile:/data/keyfile
        networks:
          - mongo-network
        restart: always
    
      mongo-secondary-1:
        image: mongo:latest
        container_name: mongo-secondary-1
        command: mongod --bind_ip_all --replSet rs0 --port 27017 --auth --keyFile /data/keyfile/mongodb-keyfile
        ports:
          - "27018:27017"
        volumes:
          - ./data/secondary1:/data/db
          - ./keyfile:/data/keyfile
        networks:
          - mongo-network
        restart: always
        depends_on:
          - mongo-primary
    
      mongo-secondary-2:
        image: mongo:latest
        container_name: mongo-secondary-2
        command: mongod --bind_ip_all --replSet rs0 --port 27017 --auth --keyFile /data/keyfile/mongodb-keyfile
        ports:
          - "27019:27017"
        volumes:
          - ./data/secondary2:/data/db
          - ./keyfile:/data/keyfile
        networks:
          - mongo-network
        restart: always
        depends_on:
          - mongo-primary
    
    networks:
      mongo-network:
        driver: bridge
    
    
  4. شروع آهنگسازی Docker

    docker-compose up -d
    
    
  5. ماکت را پیکربندی کنید

    به گره اولیه وصل شوید و ماکت را اولیه کنید:

    docker exec -it mongo-primary mongosh
    rs.initiate({
      _id: "rs0",
      members: [
        { _id: 0, host: "mongo-primary:27017", priority: 2 },
        { _id: 1, host: "mongo-secondary-1:27017", priority: 1 },
        { _id: 2, host: "mongo-secondary-2:27017", priority: 1 }
      ]
    });
    
    
  6. یک کاربر سرپرست ایجاد کنید

    use admin;
    db.createUser({
      user: "adminUser",
      pwd: "securePassword",
      roles: [ { role: "root", db: "admin" } ]
    });
    
    
  7. رشته اتصال MongoDB با تأیید اعتبار (ReplicaSet + IP عمومی)

در محلی

mongodb://appUser:appPassword@mongo-primary:27017,mongo-secondary-1:27017,mongo-secondary-2:27017/myApp?replicaSet=rs0&authSource=myApp
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای IP عمومی

mongodb://appUser:appPassword@your_vps_ip:27017,your_vps_ip:27018,your_vps_ip:27019/myApp?replicaSet=rs0&authSource=myApp
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان

با مراحل فوق می توانید به راحتی و به طور مؤثر یک ماکت MongoDB را با Docker مستقر کنید. فراموش نکنید که ارتباط خود را تأیید کنید و در صورت لزوم تنظیمات امنیتی اضافی را در نظر بگیرید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا