Kết quả: image size 413Mb, files + folders đều của root:
So sánh size của 2 image:
Câu số 2: vì sao RUN chown -R appuser:appgroup /app lại lâu, lí do là ví nó sẽ duyệt qua cả node_modules, nên sẽ khá lâu. Cách để fix là bạn có thể đổi qua user appuser:appgroup trước khi chạy npm install, thì như vậy folder node_modules sẽ tự có quyền của appuser:appgroup luôn, và bạn chỉ cẩn chown những file/folder còn lại.
Hướng dẫn cách cải thiện Dockerfile để chown chạy nhanh hơn:
FROM node:16-alpineWORKDIR /app# Đổi quyền của cả folder /app về non-root, lúc này folder rỗng nên làm rất nhanhRUN chown -R node:node /appUSER node# các commands dưới đây sẽ đều copy hoặc làm sinh ra các files/folders nằm dưới quyền của user node luônCOPY--chown=node:node package.json yarn.lock ./# vì ta đang là user node sẵn rồi, nên yarn install sinh ra cả folder node_modules cũng của "node" luônRUN yarn installCOPY--chown=node:node . .CMD [ "yarn", "start" ]
mình đang dùng máy win10 để build, cho mình hỏi tí tại sao khi build thêm quyền user size của image lại tăng đột biến?mình đã thử đi thử lại thì vẫn xảy ra vấn đề đó!và 1 vấn đề nữa là chạy RUN chown -R appuser:appgroup /app mất tận 198s lận.giải thích vấn đề này hộ mình với! xin cảm ơn bạn,1 chủ để rất hay!
"Hàng đợi MicroTask được sử dụng cho các hành động nội bộ rất ngắn cần được chạy không đồng bộ, ngay sau khi thứ khác hoàn thành và trước khi đưa trở lại hàng đợi Sự kiện."
Tác giải có thể minh hoạ bằng code chỗ này không? "hành động nội bộ rất ngắn" "ngay sau khi thứ khác".
Mình hiểu là việc gán destination là dựa vào value của destination tại thời điểm gán, chứ destination này không thông đến destination khác.
Ở VD2:
(2>&1) 2 --> 1 (Mà 1= screen) nên 2 --> screen
THẢO LUẬN
hi bạn,
Câu hỏi số 1: image size tăng, 96,69% bạn copy thừa file thôi
. Để chứng minh cho bạn thì mình đã trực tiếp thử điều này:
Đầu tiên mình sẽ build + chạy image với non-root user (user
node)Kết quả: image size 415Mb, files + folders trong container non-root hết:
Tiếp đó mình build image với
rootuser:Kết quả: image size 413Mb, files + folders đều của
root:So sánh size của 2 image:
Câu số 2: vì sao
RUN chown -R appuser:appgroup /applại lâu, lí do là ví nó sẽ duyệt qua cả node_modules, nên sẽ khá lâu. Cách để fix là bạn có thể đổi qua userappuser:appgrouptrước khi chạynpm install, thì như vậy foldernode_modulessẽ tự có quyền củaappuser:appgroupluôn, và bạn chỉ cẩn chown những file/folder còn lại.Hướng dẫn cách cải thiện Dockerfile để
chownchạy nhanh hơn:mình đang dùng máy win10 để build, cho mình hỏi tí tại sao khi build thêm quyền user size của image lại tăng đột biến?mình đã thử đi thử lại thì vẫn xảy ra vấn đề đó!và 1 vấn đề nữa là chạy RUN chown -R appuser:appgroup /app mất tận 198s lận.giải thích vấn đề này hộ mình với! xin cảm ơn bạn,1 chủ để rất hay!
great
💪👋💪💪@test2022 yayy, okie e nhé 💪
@maitrungduc1410 oke anh Để lúc nào em thử xem sao
Cuối cùng cũng chạy được rồi. Bài viết của anh hay lắm
@maitrungduc1410
Bài viết đỉnh của chóp😃
Ngắn gọn xúc tích dễ hiểu. Cảm ơn bác :3
cảm ơn bạn
"Async không yêu tự động biến chương trình của ta phải chạy multithread mà có thể chỉ cần sử dụng duy nhất 1 thread"
Tác giả có thể viết thêm chỗ này không. "Khi nào chạy multithread?"
"Hàng đợi MicroTask được sử dụng cho các hành động nội bộ rất ngắn cần được chạy không đồng bộ, ngay sau khi thứ khác hoàn thành và trước khi đưa trở lại hàng đợi Sự kiện."
Tác giải có thể minh hoạ bằng code chỗ này không? "hành động nội bộ rất ngắn" "ngay sau khi thứ khác".
Khi chạy một ứng dụng Dart, một thread mới được tạo ra và được gọi là Isolate thực hiện các việc như sau:
Câu chữ hơi bị rối, hiểu thế này đúng không tác giả ơi?
Mình hiểu là việc gán destination là dựa vào value của destination tại thời điểm gán, chứ destination này không thông đến destination khác. Ở VD2: (2>&1) 2 --> 1 (Mà 1= screen) nên 2 --> screen
tks
@dungla bạn có cách sửa cho cái này chưa ạ
tks
tks
Có viết là có lên tay(nếu có chăm chút hơn cho content). Chúc bạn thành công!
các hạ cẩn thận tẩu hỏa nhập ma