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

مقدمه
استقرار یک ماکت MongoDB با Docker به طور موثر یک سیستم پایگاه داده قوی ایجاد می کند و از در دسترس بودن بالا و تحمل گسل اطمینان می دهد. من می خواهم مراحل مفصل را بر اساس تجربه دنیای واقعی خود در زیر به اشتراک بگذارم.
بنابراین روز دیگر ، من با استفاده از Nestjs + Prisma + MongoDB روی یک پروژه کار می کردم و معلوم شد که Prisma برای کار صحیح به یک ماکت نیاز دارد.
مراحل استقرار
-
ساختار دایرکتوری ایجاد کنید
دایرکتوری های لازم را برای داده ها و پیکربندی آماده کنید:
mkdir -p mongodb-replicaset/data/{primary,secondary1,secondary2} cd mongodb-replicaset
-
برای احراز هویت یک کلید کلید ایجاد کنید
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
-
یک فایل آهنگسازی 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
-
شروع آهنگسازی Docker
docker-compose up -d
-
ماکت را پیکربندی کنید
به گره اولیه وصل شوید و ماکت را اولیه کنید:
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 } ] });
-
یک کاربر سرپرست ایجاد کنید
use admin; db.createUser({ user: "adminUser", pwd: "securePassword", roles: [ { role: "root", db: "admin" } ] });
-
رشته اتصال 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 مستقر کنید. فراموش نکنید که ارتباط خود را تأیید کنید و در صورت لزوم تنظیمات امنیتی اضافی را در نظر بگیرید.