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
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ườngHy 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]
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 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
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 //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
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 /: