Phần này do mình thiếu sót 1 tí, ở phần npm ci đúng ra sẽ là npm ci --production mới chính xác. Mình tách ra cho install lại vì ở môi trường prod chúng ta chỉ install depencies chứ không cần install devDependencies. Bác thử xóa node_modules để chạy thử 2 lệnh kia sẽ thấy khi có flag --production số lượng package install sẽ ít hơn.
Việc này giúp rút ngắn thời gian build. Docker lưu cache ở bước cài đặt dependencies. Ở các lần build sau nếu file package*.json không có sự thay đổi thì sẽ dùng cache để rút ngắn thời gian, ngược lại nếu có thì sẽ cho chạy lại bước cài đặt dependencies
Mình đồng ý với bác về ý này. Do đối với môi trường production mình thường xài CI/CD nên đã ignore folder dist từ git nên chưa phát sinh vấn đề. Mình sẽ lưu ý phần này hơn thanks bác.
ARG thì đôi khi bác build image không xài docker-compose thì nó sẽ có công dụng riêng. Mình chỉ chuẩn bị trước cho trường hợp biến môi trường có sự chỉnh sửa. Trong phạm vi bài viết này bác có thể bỏ qua và để theo NODE_ENV=production cũng được.
Cảm ơn bác đã góp ý, mình sẽ cập nhật góp ý của bác vào bài viết để mọi người dễ hiểu hơn, nếu còn gì thắc mắc cứ comment nha!
Lấy thư mục đã build được từ development.
-> Sao bạn không coppy luôn node_modules mà chỉ copy thư mục dist, và npm i lại ở stage production. 2 stage nằm ở 2 container khác nhau nhưng cùng báe image cùng version node, tại sao phải install lại.
Cuối cùng bạn phải copy hết, tại sao không copy hết từ đầu mà chỉ copy file package rồi đi copy hết thêm 1 lần nữa cho mất công.
File ignore không có ignore folder dist, copy dist vào rồi sao đó build ghi đè lên đôi khi sẽ bị issues, vì không xóa các file mà khi build mới không có.
Sao không dùng ENV NODE_ENV=production, mà thêm cái ARG để làm gì. File docker-compose cũng có config NODE_ENV=production, có cần thiết nữa không.
Nếu mạng chậm mà call api lúc sắp hết hạn token thì lúc nhận response về vẫn lỗi 401 hết hạn được. Còn để thừa 1 lần call và đặt interceptor vào response thì k gặp tình trạng này.
Mình muốn xây dựng hệ thống nhận diện khuôn mặt chấm công (Phục vụ cho việc học tập tìm hiểu). Hiện mình đang dự định dùng MTCNN vs Facenet kết hợp phần cứng là Raspeberry. Rất mong bạn chia sẽ giúp mình cách xây dựng và train từ đầu với ạ
THẢO LUẬN
Một số thông tin mà chat gpt cung cấp tui thấy cũng chưa chính xác hoàn toàn, nên anh em xài thì lưu ý nhé
tài khoản smspool bác còn tiền ko, mua giúp tui cái otp đi, tại giờ nạp vào 1$ mà mua cái otp có 0, mấy đô, còn dư phí quá
okie, thanks bạn
Tuyệt zoi 😄😄
Thanks bác đã góp ý. Mình sẽ giải đáp như sau:
npm ciđúng ra sẽ lànpm ci --productionmới chính xác. Mình tách ra cho install lại vì ở môi trường prod chúng ta chỉ install depencies chứ không cần install devDependencies. Bác thử xóa node_modules để chạy thử 2 lệnh kia sẽ thấy khi có flag --production số lượng package install sẽ ít hơn.@hao3004 Cảm ơn Hảo nhìu ❣️
Chủ đề thú vị quá anh oii! Em rất thích bài viết này ạ! 💯💯
Cảm ơn bạn đã đón đọc, mình sẽ ra tiếp các bài viết chia sẻ về công nghệ sớm nhất có thể nhé 😘
cho mình hỏi port nodejs là 4000 hay 3000 ạ
Cảm ơn góp ý của bạn nhiều nhé 🤩
bài viết rất chân thực và sống động, rất hay và cảm động, cảm ơn bạn. love u 3000
@sangdesign93 có vẻ như bạn đang chạy sai image docker, cho mình xem câu lệnh bạn chạy được k
Nếu mạng chậm mà call api lúc sắp hết hạn token thì lúc nhận response về vẫn lỗi 401 hết hạn được. Còn để thừa 1 lần call và đặt interceptor vào response thì k gặp tình trạng này.
mình làm lại từ đầu thì giờ nó báo lỗi như vậy, bạn xem thử nhé
Bạn ơi, bạn tìm được cách chưa, mình cũng đang suy nghĩ về vấn đề môi trường lập trình phải cài đi cài lại mỗi lần đổi máy hoặc hệ điều hành.
Mong bạn chỉ bảo mình với nếu đã tìm ra phương pháp.
@dangthien đây nhé 😂 https://www.facebook.com/groups/viblo.community.official/posts/1602060513590911/
Tuyệt vời đúng cái đang cần để nghịch 😃
Mình muốn xây dựng hệ thống nhận diện khuôn mặt chấm công (Phục vụ cho việc học tập tìm hiểu). Hiện mình đang dự định dùng MTCNN vs Facenet kết hợp phần cứng là Raspeberry. Rất mong bạn chia sẽ giúp mình cách xây dựng và train từ đầu với ạ
bài viết rất bổ ích.