Docker-compose ví dụ mongodb

Trong bài viết này, chúng tôi sẽ giải thích cho bạn cách thiết lập mongoDB theo nhiều môi trường bằng cách sử dụng Docker-Compose

Env sản xuất

Môi trường sản xuất

Env phát triển

Một môi trường dành riêng cho sự phát triển

Kiểm tra Env

Một môi trường dành riêng cho thử nghiệm

Tại sao chúng ta cần nhiều môi trường?

Nếu bạn chỉ có một Môi trường sản xuất và bạn đang phát triển một tính năng mới, nếu có lỗi xảy ra, nó sẽ ảnh hưởng đến toàn bộ Môi trường sản xuất

Để thực hành tốt nhất, Bạn phải có Môi trường phát triển vì nếu bạn đang phát triển một tính năng mới trong Môi trường phát triển nếu có gì đó bị hỏng thì nó sẽ không ảnh hưởng đến Môi trường sản xuất

Hãy bắt đầu tạo nhiều môi trường

Hy vọng bạn đã quen thuộc với “Docker-Compose”

cấu trúc thư mục

Project
├── docker-compose.yml (File)
├── docker-entrypoint-initdb.d (Directory)
│ ├── mongo-init.js (File)

Docker-compose ví dụ mongodb
Hướng dẫn về TecoEric Cabrel TIOGO

Docker-compose ví dụ mongodb

Dưới đây là các bước

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

Thiết lập dự án

Sao chép dự án từ kho GitHub này và theo dõi tệp Readme để thiết lập cục bộ. Nếu bạn không có cơ sở dữ liệu Mongo, bạn có thể làm theo hướng dẫn này để cài đặt nó;


git clone https://github.com/tericcabrel/blog-tutorials.git

cd blog-tutorials/node-webapp-pdf

yarn install

cp .env.example .env
nano .env

yarn start

Nếu mọi thứ được cấu hình như mong đợi, bạn sẽ chạy dự án

Docker-compose ví dụ mongodb
Sao chép dự án từ GitHub và thiết lập cục bộ

Tạo một hình ảnh Docker của dự án

Xây dựng hình ảnh Docker của dự án khiến nó không thể biết được hệ điều hành. Chúng ta nên mong đợi hành vi tương tự bất kể hệ điều hành mà chúng ta chạy hình ảnh Docker

xây dựng dự án

Chúng tôi sử dụng Bản mô tả trong dự án, nhưng, Nút. js chỉ chạy tệp Javascript, vì vậy chúng tôi cần dịch mã. tập tin ts vào. js có thể đạt được bằng cách chạy


{
  "skipLibCheck": true,
}

5

💡

Nếu bạn gặp lỗi Bản mô tả từ các tệp nằm trong thư mục node_modules, hãy mở tệp


{
  "skipLibCheck": true,
}

6 của bạn, sau đó thêm đoạn mã sau


{
  "skipLibCheck": true,
}

Lệnh trên sẽ tạo một thư mục có tên


{
  "skipLibCheck": true,
}

7 chứa. js, nhưng nếu bạn để ý thì sẽ thấy thiếu thư mục

{
  "skipLibCheck": true,
}

8 chứa tệp handlebars

Điều này là do lệnh


{
  "skipLibCheck": true,
}

9 chỉ xử lý. ts và bỏ qua những tệp khác. Vì thư mục cần thiết cho dự án, chúng tôi phải sao chép nó vào trong thư mục bản dựng bằng lệnh bash


cp -r src/views build

Dưới đây là tóm tắt xây dựng dự án cho sản xuất


# update tsconfig.json to set "skipLibCheck"

yarn tsc

cp -r src/views build

Xây dựng hình ảnh Docker

Tại thư mục dự án gốc, tạo một tệp có tên


cp -r src/views build

0. Chúng tôi sẽ viết các hướng dẫn để xây dựng một hình ảnh. Mở tệp, sau đó thêm mã bên dưới


FROM node:18-alpine3.17

RUN mkdir -p /home/app

WORKDIR /home/app

COPY build ./build
COPY public ./public
COPY package.json .

RUN yarn install --frozen-lockfile --production

EXPOSE 4500

ENTRYPOINT ["node", "build/index.js"]

Lưu tệp, sau đó chạy lệnh bên dưới để tạo hình ảnh. Đây là chữ ký lệnh xây dựng Docker


 docker build /: 

Chúng tôi có thể thêm các tùy chọn khác;

Chạy lệnh này để xây dựng hình ảnh


docker build -t tericcabrel/node-webapp:v1 .

Sau khi hoàn thành, hãy chạy


cp -r src/views build

1 để xem danh sách các hình ảnh docker

Docker-compose ví dụ mongodb
Xem hình ảnh Docker của ứng dụng

Chạy một container từ hình ảnh

Hãy bắt đầu một vùng chứa từ hình ảnh Docker của chúng tôi theo cách tương tác để xem nhật ký bằng cách chạy lệnh này


docker run -it -p 4500:4500 --name node_pdf --rm tericcabrel/node-webapp:v1

Hình dưới đây cho thấy đầu ra chúng tôi nhận được

Docker-compose ví dụ mongodb
Ứng dụng chạy từ vùng chứa không kết nối được với MongoDB.  

Rất tiếc, chúng tôi gặp lỗi cho biết chúng tôi có thể kết nối với máy chủ lưu trữ cơ sở dữ liệu có tên là


cp -r src/views build

2. Điều này là do chúng tôi đọc thông tin đăng nhập cơ sở dữ liệu từ tệp

cp -r src/views build

3 không được sao chép trong hình ảnh Docker

Điều này được thực hiện có chủ ý vì Docker cung cấp tùy chọn


cp -r src/views build

4 để thêm một biến môi trường đã bắt đầu một vùng chứa. Hãy bắt đầu vùng chứa bằng tùy chọn này


docker run -it -p 4500:4500  --name node_pdf --rm --env-file .env tericcabrel/node-webapp:v1

Rất tiếc, chúng tôi gặp lỗi cho biết chúng tôi có thể kết nối với máy chủ lưu trữ cơ sở dữ liệu có tên là


cp -r src/views build

5. Điều này xảy ra do bộ chứa Docker không thể truy cập phiên bản MongoDB được cài đặt trên máy chủ

Tạo mạng để lưu trữ vùng chứa

Chúng tôi cần chạy bộ chứa Docker từ hình ảnh MongoDB và sau đó chạy bộ chứa Docker của ứng dụng của chúng tôi. Nhưng nó vẫn không hoạt động vì các vùng chứa không nằm trên cùng một mạng

Docker-compose ví dụ mongodb
Giao tiếp giữa hai container thông qua mạng Docker

Chúng tôi sẽ bắt đầu bằng cách tạo một mạng và sau đó bắt đầu hai vùng chứa bên trong mạng này


docker network create node-webapp-network

docker run -d --network node-webapp-network --name mongodb mongo:6.0

docker run -it -p 4500:4500 --network node-webapp-network --name node_pdf --rm --env-file .env tericcabrel/node-webapp:v1

Hình dưới đây cho thấy đầu ra chúng tôi nhận được

Docker-compose ví dụ mongodb
Ứng dụng bộ chứa Docker không thể kết nối với bộ chứa MongoDB

Ứng dụng vẫn không thể kết nối với cơ sở dữ liệu vì hai lý do

  • Vì hai vùng chứa nằm trong cùng một mạng nên sử dụng 127. 0. 0. 1 làm máy chủ cơ sở dữ liệu không tốt vì nó trỏ đến máy chủ và thay vào đó chúng ta nên sử dụng tên của bộ chứa và Docker sẽ phân giải địa chỉ IP chính xác
  • Tệp
    
    cp -r src/views build
    
    
    3 của chúng tôi chứa giá trị tên người dùng và mật khẩu cơ sở dữ liệu, nhưng chúng tôi đã không đặt chúng khi bắt đầu bộ chứa MongoDB

Cập nhật thông tin đăng nhập cơ sở dữ liệu

Để set giá trị cho username và password, sẽ set 2 biến môi trường là


cp -r src/views build

7 và

cp -r src/views build

8 khi start container


{
  "skipLibCheck": true,
}

0

Bây giờ, hãy chỉnh sửa của chúng tôi. env để cập nhật thông tin đăng nhập cơ sở dữ liệu với các giá trị này


{
  "skipLibCheck": true,
}

1

Bây giờ hãy bắt đầu một vùng chứa cho ứng dụng của chúng ta


{
  "skipLibCheck": true,
}

2
Docker-compose ví dụ mongodb
Đã chạy thành công bộ chứa docker với bộ chứa MongoDB.

Hoooooooay 🎉🎉🎉

💡

Một cách khác để làm cho hai container giao tiếp với nhau là tạo một liên kết giữa chúng. Tuy nhiên, không nên sử dụng nó và nó sẽ không được dùng nữa

Sử dụng Docker Compose để quản lý container

Như bạn có thể thấy, chúng tôi đã làm nhiều việc để làm cho ứng dụng của mình hoạt động và tất cả điều này đều theo cách bắt buộc, đòi hỏi phải biết mọi lệnh và tùy chọn, đồng thời ghi nhớ vùng chứa nào sẽ bắt đầu trước vùng chứa khác

May mắn thay, Docker Compose ở đây để đơn giản hóa công việc cho chúng tôi. Chúng tôi sẽ tạo một tệp


cp -r src/views build

9 và xác định những gì chúng tôi muốn và Docker Compose sẽ thực hiện công việc

Đây là một cách khai báo. Kiểm tra liên kết này để tìm hiểu thêm về sự khác biệt giữa phong cách khai báo và mệnh lệnh

Tạo một


# update tsconfig.json to set "skipLibCheck"

yarn tsc

cp -r src/views build

0 và thêm mã bên dưới


{
  "skipLibCheck": true,
}

3Docker Soạn tệp cấu hình cho dự án

Các hướng dẫn trong tệp trên tạo ra kết quả tương tự như các hướng dẫn chúng tôi đã làm với Docker. Xây dựng và chạy với lệnh sau


{
  "skipLibCheck": true,
}

4Xây dựng và chạy dự án với Docker Compose

Đó là nó

Bây giờ bạn có thể chia sẻ dự án của mình và điều duy nhất ai đó phải làm là chạy hai lệnh trước đó và dự án đang chạy

Gói (lại

Docker CLI cung cấp các lệnh để xây dựng hình ảnh Docker cho ứng dụng của bạn và chúng ta đã thấy cách tạo hình ảnh Docker của một Nút. ứng dụng js. Mạng Docker có thể thực hiện giao tiếp giữa nhiều container

Docker Compose cho phép bạn khai báo các hướng dẫn xây dựng và chạy các thùng chứa trong tệp YAML. Điều này giúp dễ dàng chạy và thử nghiệm một dự án với nhiều ứng dụng được đóng gói dưới dạng hình ảnh Docker giao tiếp với nhau

Bạn có thể tìm mã nguồn trên kho lưu trữ GitHub

Theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi để tránh bỏ lỡ các bài đăng sắp tới cũng như các mẹo và thủ thuật mà tôi thỉnh thoảng chia sẻ

Làm cách nào để sử dụng MongoDB với 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 để triển khai MongoDB trong docker?

Cách triển khai và quản lý bộ chứa Docker MongoDB .
Tải xuống hình ảnh Docker MongoDB
Triển khai Docker MongoDB Container
Gắn Docker MongoDB Container vào Bash Shell
Tạo người dùng MongoDB quản trị
Tạo cơ sở dữ liệu MongoDB
Khởi động lại Docker MongoDB Container
Phần kết luận

MongoDB docker có miễn phí không?

MongoDB là một chương trình cơ sở dữ liệu định hướng tài liệu đa nền tảng và miễn phí .

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