Docker mongodb

Chào mọi người, đây là bài viết đầu tiên cũng như bắt đầu cho chuỗi bài chia sẻ kiến ​​thức và kinh nghiệm trong quá trình làm việc cá nhân mà mình gặp phải trong suốt khoảng thời gian vừa qua. Các bài viết sắp tới của mình sẽ xoay quanh chủ đề liên quan đến các lĩnh vực Backend, Blockchain cũng như DevOps, hi vọng thông qua việc chia sẻ kiến ​​thức mình cũng sẽ đón nhận về các ý kiến ​​đóng góp để cải thiện kỹ năng và . Backend, Blockchain cũng như DevOps, hi vọng thông qua việc chia sẻ kiến ​​thức mình cũng sẽ đón nhận về các ý kiến ​​đóng góp để cải thiện thiện kỹ năng và nâng cao trình độ trong lĩnh vực CNTT với lượng kiến ​​thức mở rộng lớn của chúng tôi hiện có

Nội dung chính Hiển thị

Trải qua khoảng thời gian chật vật để cấu hình MongoDB với Docker mình xin bắt đầu chia sẻ Chuỗi bài viết Mục đích chia sẻ kiến ​​thức và kinh nghiệm cho mọi người, để có thể hiểu được nguyên lý cốt lõi cũng như dễ dàng vận dụng để thiết lập . Với loạt bài này mình xin gửi đến 2 phần nội dung. MongoDB với Docker mình xin bắt đầu chia sẻ chuỗi bài viết nhằm chia sẻ kiến ​​thức và kinh nghiệm cho mọi người, để có thể hiểu được nguyên lý cốt lõi cũng như dễ dàng vận chuyển để thiết lập cơ sở dữ liệu khởi động trên máy chủ VPS . Với loạt bài này mình xin gửi đến 2 phần nội dung

  • Phần 1 (Độc lập). giúp các bạn dễ dàng thiết lập một nền tảng MongoDB độc lập một cách cơ bản. giúp các bạn dễ dàng thiết lập một nền tảng MongoDB độc lập một cách cơ bản
  • Phần 2 (Replicate Set). sẽ được mình gửi đến trong khoảng thời gian sắp tới - Ứng dụng giúp mọi người có thể cấu hình một cụm MongoDB Hướng dẫn trả lời các mục tiêu. Sao lưu dữ liệu và Tăng tính sẵn sàng cho hệ thống. sẽ được mình gửi đến trong thời gian sắp tới - Ứng dụng giúp mọi người có thể cấu hình một cụm MongoDB Hướng dẫn trả lời các mục tiêu. Sao lưu dữ liệu và Tăng tính sẵn sàng cho hệ thống

GIỚI THIỆU

MongoDB

MongoDB là một cơ sở dữ liệu nổi tiếng và được sử dụng rộng rãi hiện nay thuộc nhóm cơ sở dữ liệu NoSQL. Với các đặc tính nổi bật, giúp các nhà phát triển dễ dàng tiếp cận, phát triển khai thác và mở rộng hệ thống của mình trên cơ sở dữ liệu một cách nhanh chóng và dễ dàng

  • Uyển chuyển. cấu trúc dữ liệu linh hoạt, không ràng buộc các trường dữ liệu từ đầu. cấu trúc dữ liệu linh hoạt, không ràng buộc các trường dữ liệu từ đầu
  • khả năng mở rộng. dễ dàng mở rộng theo chiều ngang. dễ dàng mở rộng theo chiều ngang
  • truy vấn. Hỗ trợ truy vấn nhanh vì tiêu giảm các mối quan hệ ràng buộc cũng như cơ chế bộ nhớ đệm. Hỗ trợ truy vấn nhanh vì tiêu giảm các mối quan hệ ràng buộc cũng như cơ chế bộ nhớ đệm
  • được lập chỉ mục. Hỗ trợ bộ Index xử lý đa dạng cho các nhu cầu khác nhau. Hỗ trợ bộ Index xử lý đa dạng cho các nhu cầu khác nhau

docker

Docker Container là một đơn vị ảo cô lập và quán nhất để chạy ứng dụng và tất cả các cấu hình phụ thuộc cần thiết. Hãy tưởng tượng một tệp zip lớn sẽ bao gồm mọi thứ cần thiết để chạy ứng dụng của bạn trên bất kỳ hệ điều hành hoặc phần cứng nào. Docker là một công cụ để khởi động các vùng chứa nó

Hướng dẫn docker-compose mongodb volume - khối lượng mongodb do docker-soạn

Từ đó, chúng ta có thể nhận thấy những lợi ích tuyệt vời của việc sử dụng Docker

  • Consistency ( Tính nhất quán). Bằng cách sử dụng công nghệ Container, bạn có thể chắc chắn rằng mọi người trong nhóm của bạn sử dụng các cấu hình và thời gian chạy giống nhau. Bạn cũng giảm thiểu đáng kể sai sót khi phát triển khai thác vì môi trường Sản xuất sẽ phù hợp với môi trường Dàn dựng của bạn. Bằng cách sử dụng công nghệ Container, bạn có thể chắc chắn rằng mọi người trong nhóm của bạn sử dụng các cấu hình và thời gian chạy giống nhau. Bạn cũng giảm thiểu đáng kể sai sót khi phát triển khai thác vì môi trường Sản xuất sẽ phù hợp với môi trường Dàn dựng của bạn
  • Nhẹ (Trọng lượng nhẹ). Bộ chứa Docker khởi động nhanh và tài nguyên tài nguyên ít hơn rất nhiều so với máy ảo. Bộ chứa Docker khởi động nhanh và tài nguyên tài nguyên ít hơn rất nhiều so với máy ảo
  • Phù du (Không bền vững). Mọi thay đổi trong vùng chứa tệp hệ thống sẽ bị hủy khi kết thúc. Sự không bền vững này đảm bảo một môi trường trong sạch ở mọi sự kiện khởi động ứng dụng. Mọi thay đổi trong vùng chứa tệp hệ thống sẽ bị hủy khi kết thúc. Sự không bền vững này đảm bảo một môi trường trong sạch ở mọi sự kiện khởi động ứng dụng

MongoDB chạy trong Docker Container?

Với việc ngừng xem Docker Container như một máy chủ vật lý VPS thông thường, chúng ta hoàn toàn có thể phát triển bất kỳ dịch vụ hay ứng dụng nào lên Container và MongoDB cũng không ngoại lệ. Với việc sử dụng sẵn các Base Image trên Docker Hub, được cộng đồng duy trì và phát triển hoặc tự tùy chỉnh lại cho mình một Image mới với các tùy chỉnh cấu hình. Với các loại Image mongodb này, chúng tôi sẽ phát triển một Container Docker được xây dựng dựa trên Imgae MongoDB thông qua một tệp cấu hình được gọi là docker-compose. yamlDocker Hub, được cộng đồng duy trì và phát triển hoặc tự tùy chỉnh lại cho mình một Hình ảnh mới với các tùy chỉnh cấu hình. Với các loại Image mongodb này, chúng tôi sẽ phát triển một Container Docker được xây dựng dựa trên Imgae MongoDB thông qua một tệp cấu hình được gọi là docker-compose. khoai mỡ

hướng dẫn

Bước 1. Tạo thư mục cài đặt trên VPS

Cấu hình bao gồm thư mục cấu trúc

  • Thư mục rỗng /data (vùng chứa dữ liệu mount từ Docker Container ra ngoài máy chủ VPS - tránh mất dữ liệu khi khởi động lại Docker Container)
  • Thư mục trống /log (vùng chứa log mount từ Docker Container ra bên ngoài máy chủ VPS)
  • Thư mục /config. (chứa file mongod. conf)
    • Tập tin. mongod. conf (tệp cấu hình MongoDB)
  • Tập tin docker-compose. yaml (tệp cấu hình MongoDB với Docker Container)

Bước 2. Cấu hình MongoDB

Thông thường, file config default sẽ nằm trong /etc/mongodb/mongod. conf. Với việc khởi tạo file nội dung mongod. conf và mount vào trong Docker Container, ta sẽ tiến hành thay đổi một số tham số so với bao gồm tệp mặc định

  • Tác giả thiết lập. tăng cường bảo mật cho DB
  • Thiết lập IP cho phép gọi từ. bất cứ đâu (0. 0. 0. 0) - thay vì local. 127. 0. 0. 1 (nhằm tạo kết nối trực tiếp từ bên ngoài đến Container)
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
 # fork: true  # fork and run in background
 # pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


security:
 authorization: "enabled"
 # keyFile: /etc/secret.kf
#operationProfiling:

#replication:
 # replSetName: "marketplace_nft"
#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

Bước 3. Cấu hình file Docker-compose. khoai mỡ

Chúng ta cần mount các thông tin cần thiết vào Container trước khi khởi động nên cần thông qua một tệp Docker-compose. yaml cung cấp các cấu hình nâng cao cho Docker Container

version: "3.9"
services:
  mongodb:
    image: mongo:5.0.6
    container_name: gateway_MBCtest_DB
    ports:
      - "27016:27017"
    volumes:
      - "./config/mongod.conf:/data/configdb/mongod.conf:ro"
      - "./data:/data/db"
      - "log:/var/log/mongodb"
    command: ["/usr/bin/mongod", "-f", "/data/configdb/mongod.conf"]
    restart: always
volumes:
  log: null

Các thông số cần quan tâm trong docker-compose file bao gồm

  • hình ảnh. only base image to build container
  • container_name. tên vùng chứa đã khởi chạy
  • cổng. ánh xạ cổng từ bên ngoài vào bên trong Docker container (hạn chế sử dụng cổng mặc định để giảm thiểu các cuộc tấn công)
  • tập. mount dữ liệu giữa VPS và Container
  • chỉ huy. command khởi động tự động khi bắt đầu start Container
  • khởi động lại. lệnh yêu cầu dịch vụ luôn tái khởi động khi ngừng hoạt động - tăng tính khả dụng

Bước 4. Build và Start Docker Container

Chạy lệnh sau để thiết lập MongoDb bên trong Docker Container với các cấu hình đã thiết lập bên trên

docker-compose up -d --build --force-recreate

Bước 5. Kiểm tra Container đang chạy

docker ps

Bước 6. Exec to side in Container

________số 8

Bước 7. Tiến hành thiết lập cơ sở dữ liệu

  • Truy cập Mongo. mongo
  • Thiết lập người dùng Quản trị viên.
    version: "3.9"
    services:
      mongodb:
        image: mongo:5.0.6
        container_name: gateway_MBCtest_DB
        ports:
          - "27016:27017"
        volumes:
          - "./config/mongod.conf:/data/configdb/mongod.conf:ro"
          - "./data:/data/db"
          - "log:/var/log/mongodb"
        command: ["/usr/bin/mongod", "-f", "/data/configdb/mongod.conf"]
        restart: always
    volumes:
      log: null
    
    0
db.createUser({ 
    user: "superadmin",
    pwd: "hjwbtg4nkjgnbdsg534536rtfbvgdg",
    roles: [{
    role: "root",
    db: "admin"
    }]
}) 
  • Thiết lập người dùng Quản trị viên
db.createUser({ 
    user: "anhkolamgidauanhthe",
    pwd: "kjghjewht4t643yghbvf54egdsgds",
    roles: [{
    role: "readWrite",
    db: "database_test"
    }]
}) 

Bước 8. Mở tường lửa trên máy chủ VPS

version: "3.9"
services:
  mongodb:
    image: mongo:5.0.6
    container_name: gateway_MBCtest_DB
    ports:
      - "27016:27017"
    volumes:
      - "./config/mongod.conf:/data/configdb/mongod.conf:ro"
      - "./data:/data/db"
      - "log:/var/log/mongodb"
    command: ["/usr/bin/mongod", "-f", "/data/configdb/mongod.conf"]
    restart: always
volumes:
  log: null
0

Bước 9. Action connection to URL Connection

Cuối cùng chúng tôi mô tả có thể dễ dàng kết nối và tương tác với MongoDb thông qua kết nối URL

version: "3.9"
services:
  mongodb:
    image: mongo:5.0.6
    container_name: gateway_MBCtest_DB
    ports:
      - "27016:27017"
    volumes:
      - "./config/mongod.conf:/data/configdb/mongod.conf:ro"
      - "./data:/data/db"
      - "log:/var/log/mongodb"
    command: ["/usr/bin/mongod", "-f", "/data/configdb/mongod.conf"]
    restart: always
volumes:
  log: null
0

Bước 10. Để lại 1 like và 1 follow cho mềnh ^^

LỜI KẾT THÚC

Bài viết đã giới thiệu đến các bạn kiến ​​thức và hướng dẫn cần thiết để giúp mọi người có thể dễ dàng thiết lập mongoDB chạy trong Docker Container. Nội dung đã mang đến bao gồm

  • Các khái niệm. MongoDB, docker
  • CUỘC PHÁT TRIỂN. được hướng dẫn chi tiết thông qua Hướng dẫn
  • Kinh nghiệm cá nhân. has been anh ấy truyền tải ghép xuyên suốt bài viết

Hi vọng có thể nhận được các ý kiến ​​đóng góp và hẹn gặp lại mọi người vào Phần 2 (Replicate Set) của loạt bài này trong tương lai ))