Docker-compose kết nối với thùng chứa mongodb

Container là một từ thông dụng công nghệ trong ngành. Chúng là các cấu trúc môi trường cơ bản giúp xây dựng, chia sẻ và chạy các ứng dụng của chúng tôi. Bộ chứa nhẹ, độc lập với nền tảng và ảo hóa lớp ứng dụng. Ngày nay, chúng ta thậm chí còn có các cơ sở dữ liệu như MySQL, MongoDB, PostgreSQL và nhiều cơ sở dữ liệu khác ở dạng được chứa. Tuy nhiên, hướng dẫn này sẽ đi sâu vào các tùy chọn để triển khai MongoDB với các ví dụ

Có rất nhiều cách để triển khai MongoDB dưới dạng vùng chứa. Chủ yếu, chúng tôi lấy hình ảnh trực tiếp từ DockerHub chính thức. Ngoài ra, chúng tôi có thể sử dụng bộ công cụ docker-compose giúp chúng tôi tập hợp toàn bộ ngăn xếp ứng dụng lại với nhau

Bây giờ chúng ta hãy đi vào chi tiết thực chất của nó

2. Sử dụng docker-compose

docker-compose là một công cụ có thể nhanh chóng hiển thị một chồng các vùng chứa trong thời gian ngắn hơn so với việc hiển thị từng vùng chứa riêng lẻ. Nó sử dụng tệp YAML để thêm cấu hình và tạo tất cả các dịch vụ ứng dụng. Tuy nhiên, nó sử dụng công cụ Docker trong phần phụ trợ để tạo và chạy các thùng chứa

2. 1. cài đặt docker-compose

Hãy nhanh chóng chuyển sang các bước cài đặt

Trước tiên, chúng tôi sẽ cần tải xuống docker-compose

# sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
...
.. output truncated ...
...

Tiếp theo, hãy làm cho tệp nhị phân đã tải xuống có thể thực thi được

# sudo chmod +x /usr/local/bin/docker-compose

Bây giờ, hãy kiểm tra cài đặt để kiểm tra xem nó có hoạt động bình thường không

# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

Tuyệt vời. Chúng tôi đã cài đặt docker-compose thành công trên máy của mình

2. 2. Xây dựng vùng chứa bằng cách sử dụng tệp soạn thảo

Hãy xây dựng tệp soạn thảo docker đơn giản của chúng tôi để hiển thị phiên bản bộ chứa MongoDB

Mọi tệp docker-compose bắt buộc phải có thẻ phiên bản và dịch vụ, trong khi thẻ ổ đĩa và mạng là tùy chọn. Ở đây, thẻ phiên bản hiển thị phiên bản của định dạng tệp soạn thảo, trong khi thẻ dịch vụ hướng dẫn cấu hình của vùng chứa

# vi docker-compose.yml
version: '3.3'
services:
    mongo:
        ports:
            - '27017:27017'
        container_name: dkrcomp-mongo
        restart: always
        logging:
            options:
                max-size: 1g
        environment:
            - MONGO_INITDB_ROOT_USERNAME=mongoadmin
            - MONGO_INITDB_ROOT_PASSWORD=bdung
        image: mongo

Ví dụ: chúng tôi cần hình ảnh bộ chứa mongo và chi tiết cổng để hiển thị các dịch vụ MongoDB. Hơn nữa, chúng tôi cũng đặt thông tin đăng nhập DB với tên vùng chứa

Hãy tạo và khởi động các thùng chứa bằng lệnh up đơn giản

# docker-compose up
Creating network "b014_default" with the default driver
Creating dkrcomp-mongo .. done
Attaching to dkrcomp-mongo
dkrcomp-mongo | about to fork child process, waiting until server is ready for connections.
dkrcomp-mongo | forked process: 29
dkrcomp-mongo |
dkrcomp-mongo | {"t":{"$date":"2022-06-28T00:22:34.228+00:00"},"s":"I",  "c":"CONTROL",  "id":20698,   "ctx":"-","msg":"***** SERVER RESTARTED *****"}
dkrcomp-mongo | {"t":{"$date":"2022-06-28T00:22:34.234+00:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
...
.. output truncated ...
...

Hãy xem trạng thái vùng chứa được tạo bằng lệnh docker ps

# docker ps | grep dkrcomp-mongo
1bd9e76f808a   mongo                                 "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes           0.0.0.0:27017->27017/tcp, :::27017->27017/tcp                                                                                          dkrcomp-mongo

2. 3. Truy cập mongo Container

Chúng ta cũng cần cài đặt mongo client để chạy và truy cập MongoDB

# sudo apt install mongodb-clients -y
[sudo] password for tools:
Reading package lists.. Done
...
.. output truncated ...
...
Setting up mongo-tools (3.6.3-0ubuntu1) ...
Setting up mongodb-clients (1:3.6.3-0ubuntu1.4) ...

Tiếp theo, hãy lấy địa chỉ IP vùng chứa để truy cập cơ sở dữ liệu bằng dịch vụ máy khách đã cài đặt. Nếu chúng tôi đưa ra lệnh kiểm tra docker, chúng tôi sẽ thấy thông tin chi tiết về vùng chứa ở định dạng JSON. Chúng tôi cũng có thể chọn bất kỳ trường nào từ JSON kết quả

# docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 1bd9e76f808a
172.18.0.2

Chúng tôi có thể đăng nhập vào MongoDB thông qua ứng dụng khách, sử dụng thông tin máy chủ và cổng của vùng chứa của chúng tôi

________số 8_______

sử dụng db. auth, chúng tôi có thể xác thực bằng cách cung cấp thông tin đăng nhập được xác định trên tệp docker-compose

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

> use baeldung-comp
switched to db baeldung-comp

> db.articles.insert({"name":"Author1"})
WriteResult({ "nInserted" : 1 })
> db.articles.insert({"name":"Author2"})
WriteResult({ "nInserted" : 1 })
> db.articles.insert({"name":"Author3"})
WriteResult({ "nInserted" : 1 })

Sau khi xác thực, chúng ta có thể thực hiện các thao tác CRUD hàng ngày trên cơ sở dữ liệu baeldung-comp mới được tạo. Sử dụng lệnh show dbs, chúng ta có thể xem cơ sở dữ liệu mới được tạo và chúng ta có thể sử dụng các lệnh bộ sưu tập để xem dữ liệu bên trong bộ sưu tập bài viết

# sudo chmod +x /usr/local/bin/docker-compose
0

chúc mừng. Chúng ta đã chạy thành công phiên bản bộ chứa MongoDB bằng cách sử dụng docker-compose

3. Sử dụng hình ảnh mongo qua Terminal

Trong phần này, chúng ta sẽ xem cách xây dựng và truy cập cơ sở dữ liệu MongoDB từ thiết bị đầu cuối

Trước tiên, hãy cài đặt hình ảnh mongo trực tiếp từ kho lưu trữ DockerHub bằng lệnh docker pull. Tại đây, lệnh kéo ban đầu sẽ kiểm tra tính khả dụng của hình ảnh tùy thuộc vào kiến ​​trúc máy được yêu cầu, sau đó hình ảnh được tải xuống máy cục bộ

# sudo chmod +x /usr/local/bin/docker-compose
1

3. 1. Chạy một Container

Bây giờ, nếu chúng ta đưa ra lệnh docker run với một vài đối số hỗ trợ, Docker sẽ khởi động phiên bản MongoDB và trả lại cho chúng ta mã băm duy nhất mà chúng ta có thể sử dụng để xác định vùng chứa. Hãy xem lệnh đầy đủ

# sudo chmod +x /usr/local/bin/docker-compose
2

Hãy tìm hiểu sâu hơn về các lập luận

  • -d chạy vùng chứa ở chế độ tách rời
  • –name cho phép chúng ta đặt tên của thể hiện vùng chứa (ví dụ: –name some-mongo)
  • -p xuất bản cổng vùng chứa tới máy chủ. Định dạng của giá trị tùy chọn là [host-port. container-port] — ví dụ: -p 27017. 27017
  • -e đặt biến môi trường khi vùng chứa cần. Ví dụ: chúng tôi đã bật thông tin đăng nhập gốc cho cơ sở dữ liệu bằng cách sử dụng MONGO_INITDB_ROOT_USERNAME=mongoadmin, MONGO_INITDB_ROOT_PASSWORD=bdung
  • Cuối cùng, chúng tôi đã đặt tên hình ảnh là mongo. mới nhất để lấy vùng chứa từ mongo với thẻ mới nhất

Như đã đề cập trước đó, chúng ta có thể sử dụng lệnh docker ps để kiểm tra trạng thái của container đang chạy. Ngoài ra, chúng ta có thể sử dụng docker ps -a để hiển thị thông tin container đang chạy và đã dừng

# sudo chmod +x /usr/local/bin/docker-compose
3

3. 2. Truy cập Bộ chứa MongoDB

Thông thường, chúng tôi truy cập cơ sở dữ liệu thông qua các máy khách. Tuy nhiên, nếu chúng tôi đang truy cập vào máy từ xa, chúng tôi sẽ sử dụng IP máy chủ và cổng. Mặt khác, chúng ta cũng có thể truy cập cơ sở dữ liệu bằng cách đăng nhập vào vùng chứa. Chúng ta đã thấy phần trình diễn của phần trước trong phần trước và chúng tôi sẽ trình bày phần sau trong phần này

Tại đây, lệnh docker exec tạo phiên BASH với vùng chứa đang chạy và giữ cho STDIN mở ở cả chế độ đính kèm và tách rời

Sau khi đăng nhập vào cơ sở dữ liệu, chúng tôi sử dụng db. auth để xác thực quyền truy cập bằng cách cung cấp thông tin đăng nhập được xác định bằng các biến môi trường. Đối với tất cả các xác thực thành công, chúng tôi sẽ nhận được mã phản hồi 1 như minh họa bên dưới

# sudo chmod +x /usr/local/bin/docker-compose
4

Bây giờ, chúng ta có thể thực hiện các thao tác CRUD hàng ngày trên cơ sở dữ liệu baeldung mới được tạo. Sử dụng lệnh show dbs, chúng ta có thể xem cơ sở dữ liệu mới được tạo và chúng ta có thể sử dụng các lệnh bộ sưu tập để xem dữ liệu bên trong bộ sưu tập bài viết

# sudo chmod +x /usr/local/bin/docker-compose
5

4. Phần kết luận

Trong bài viết này, trước tiên chúng tôi đã mô tả container là gì. Sau đó, chúng ta đã thảo luận về các bước để hiển thị bộ chứa MongoDB bằng cách sử dụng thiết bị đầu cuối và công cụ docker-compose cho các ứng dụng nhiều bộ chứa

tác giả dưới cùng

Nếu bạn có một vài năm kinh nghiệm trong hệ sinh thái Linux và bạn muốn chia sẻ trải nghiệm đó với cộng đồng, hãy xem Nguyên tắc đóng góp của chúng tôi

Làm cách nào để kết nối MongoDB bằng Docker Compose?

Dưới đây là các bước. .
Tạo một hình ảnh docker của dự án
Chạy hình ảnh docker của cơ sở dữ liệu Mongo
Chạy một hình ảnh docker của dự án
Làm cho họ giao tiếp với nhau
Sử dụng Docker Compose để dễ dàng quản lý chúng

Làm cách nào để sử dụng MongoDB với docker?

Chạy MongoDB dưới dạng bộ chứa docker .
Bước 1. Kéo thùng chứa MongoDB
Bước 2. Chạy vùng chứa
Bước 3. xác minh trạng thái
Bước 4. Truy cập trình bao MongoDB trong vùng chứa đang chạy

Làm cách nào để kết nối MongoDB với docker nodejs?

Phần 1. Cài đặt Docker trên máy của bạn. Thiết lập kho lưu trữ. .
2. Thiết lập một ứng dụng node js đơn giản
3. Tạo Dockerfile cho ứng dụng
4. Viết cấu hình Docker Compose
5. mô hình cầy mangut
6. Kết nối cơ sở dữ liệu MongoDB
7. Tạo API để nhận và lưu trữ người dùng. .
Phần 8. Chạy docker-compose để build ứng dụng

Bạn có thể chạy Docker soạn trong một vùng chứa không?

Tệp soạn thảo có thể chứa cấu hình cho nhiều dịch vụ (bộ chứa docker) . Các dịch vụ này được xác định trong tùy chọn dịch vụ.