Cảm ơn bài viết của bạn 🥰. Mình có dựa trên giải pháp của bạn để đóng gói thành một plugin trên Intellij IDE và Android Studio. Mong bạn tham khảo và thấy hay hãy cập nhật thêm cách của mình vào bài nhé.
Em chạy được file docker compose rồi nhưng khi chat trên telegram thì bot trả kết quả
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/telegram/ext/_application.py", line 945, in process_update
await coroutine
File "/usr/local/lib/python3.8/site-packages/telegram/ext/_handler.py", line 135, in handle_update
return await self.callback(update, context)
File "bot/bot.py", line 141, in new_dialog_handle
await register_user_if_not_exists(update, context, update.message.from_user)
File "bot/bot.py", line 38, in register_user_if_not_exists
if not db.check_if_user_exists(user.id):
File "/code/bot/database.py", line 19, in check_if_user_exists
if self.user_collection.count_documents({"_id": user_id}) > 0:
File "/usr/local/lib/python3.8/site-packages/pymongo/collection.py", line 1842, in count_documents
return self._retryable_non_cursor_read(_cmd, session)
File "/usr/local/lib/python3.8/site-packages/pymongo/collection.py", line 1847, in _retryable_non_cursor_read
with client._tmp_session(session) as s:
File "/usr/local/lib/python3.8/contextlib.py", line 113, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1757, in _tmp_session
s = self._ensure_session(session)
File "/usr/local/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1740, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File "/usr/local/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1685, in __start_session
self._topology._check_implicit_session_support()
File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 538, in _check_implicit_session_support
self._check_session_support()
File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 554, in _check_session_support
self._select_servers_loop(
File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 238, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.Serv
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.
THẢO LUẬN
@minhtuan.nguy cho mình hỏi là VPS này có cần cấu hình cao ko, và có cần cấu hình VPN cho nó để nó có thể login ko ạ
Chào bạn, nó là một hàm kiểu như xuất ra một one-hot vector với cái nhãn tương ứng thôi nhé
Cảm ơn bác. Mình đã updated the article nhé.
@huukimit cho em hỏi thêm về phương pháp cache: anh cache cả html luôn hay chỉ cache data ?
Cảm ơn bài viết của bạn 🥰. Mình có dựa trên giải pháp của bạn để đóng gói thành một plugin trên Intellij IDE và Android Studio. Mong bạn tham khảo và thấy hay hãy cập nhật thêm cách của mình vào bài nhé.
https://viblo.asia/p/thay-doi-package-name-cua-android-studio-de-dang-voi-plugin-apr-obA466rM4Kv
Em thấy có thể mount log của docker vào 1 filebeat, rồi dùng logstash filter theo container name để đỡ tốn resource hơn khi deploy kiểu sidecar
hay quá anh
Bạn ơi bài này mình có phần 3 không ạ?
Em chạy được file docker compose rồi nhưng khi chat trên telegram thì bot trả kết quả
Mọi người có gì chỉ giáo giúp e với ạ
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é 🤩