Để làm chức năng này thì bạn bắt buộc phải triển khai session để lưu data vào session cho web. Khi đó session bị mất thì mới đảm bảo được tính an toàn rằng thông tin cũ không còn hiệu lực và bắt buộc phải login lại.
Anh ơi, cho em hỏi làm sao để show ra id của prefecture vậy ạ, em tìm hiểu trong thư viện thì nó chỉ có thể show đc id của region, mong mn rep giúp em ạ!
Tuy nhiên trường hợp tích hợp bằng merge thì những commit của branch sẽ hoàn toàn không được record lại . Do vậy nếu chúng ta muốn lưu lại một cách chuẩn xác flow của dự án thì Rebase là phương pháp được recommend.
-> có vẻ hơi bị ngược
Ở trường hợp này thì bất kể bạn thay đổi ở package.json hoặc trong source code JS thì câu lệnh COPY . . sẽ không được cache vì bên ngoài có sự > > thay đổi -> yarn install chạy lại
Cảm ơn bạn, ở đây chắc do mình hiểu nhầm, mình cứ tưởng docker sẽ check nếu package.json yarn.lock ko thay đổi thì nó sẽ ko chạy lại yarn install.
Trường hợp 1: Dockerfile như bên dưới, copy tất tần tật mọi thứ vào trước sau đó mới chạy yarn install
COPY . . RUN yarn install
Ở trường hợp này thì bất kể bạn thay đổi ở package.json hoặc trong source code JS thì câu lệnh COPY . . sẽ không được cache vì bên ngoài có sự thay đổi -> yarn install chạy lại
Trường hợp 2: COPY package.json và yarnlock vào trước, sau đó chạy yarn install
Ở trường hợp này, nếu bạn có thay đổi ở trong file package.json hoặc yarnlock thì hiển nhiên câu lệnh COPY package.json yarn.lock ./ có sự thay đổi, và kể từ đó Docker sẽ không dùng lại cache -> yarn install sẽ chạy lại
Nhưng nếu bạn không cài thêm package mới gì, mà chỉ sửa source code JS, tức là package.json và yarn.lock không đổi, vậy thì câu lệnh đầu tiên COPY package.json yarn.lock ./ Docker thấy không có gì thay đổi -> dùng cache -> tiếp theo câu lệnh yarn install thì nó phụ thuộc vào package.json và yarn.lock, mà như mình vừa giải thích là không có gì đổi cả -> yarn install cũng được cache không phải chạy lại. Chỉ có dòng cuối cùng COPY . . là phải chạy lại thôi vì code JS thay đổi (mà COPY thì chạy trong 1 nốt nhạc )
Qua 2 trường hợp trên, hẳn bạn đã thấy trường hợp 2 tối ưu hơn, nhất là file package.json và yarn.lock không thay đổi thường xuyên (có phải ngày nào ta cũng cài thêm package mới đâu đúng không 😅), mà thường chỉ có code chính (JS) thay đổi, do vậy build image sẽ nhanh hơn nhiều.
Rule ở đây là: sắp xếp làm sao những thứ ít thay đổi thì đẩy lên đầu file Dockerfile, cái nào hay thay đổi cho xuống dưới để tận dụng tối đa Docker build cache. (nhưng đừng áp dụng quá máy móc nhé )
nếu mình chỉ thay đổi code ở file js, mà ko thay đổi ở package.json thì lệnh RUN yarn install có bị chạy lại từ đầu không?(ko dùng caching)
Mình đang hiểu là nếu k thay đổi package.json thì 2 đoạn mã bên dưới giống nhau chứ nhỉ.
COPY . .
RUN yarn install
và
COPY package.json yarn.lock ./
RUN yarn install
COPY . .
Mình có thắc mắc xíu, lệnh COPY . . đã thực thi copy toàn bộ file| folder trong thư mục hiện tại rồi.
Vậy sao cần 3 câu lệnh bên trên nữa bạn nhỉ.
Có nên sửa như bên dưới ko ạ?
THẢO LUẬN
Để làm chức năng này thì bạn bắt buộc phải triển khai session để lưu data vào session cho web. Khi đó session bị mất thì mới đảm bảo được tính an toàn rằng thông tin cũ không còn hiệu lực và bắt buộc phải login lại.
@hoc_anms haha, okie e
Anh ơi, cho em hỏi làm sao để show ra id của prefecture vậy ạ, em tìm hiểu trong thư viện thì nó chỉ có thể show đc id của region, mong mn rep giúp em ạ!
Tuy nhiên trường hợp tích hợp bằng merge thì những commit của branch sẽ hoàn toàn không được record lại . Do vậy nếu chúng ta muốn lưu lại một cách chuẩn xác flow của dự án thì Rebase là phương pháp được recommend. -> có vẻ hơi bị ngược
@maitrungduc1410 chắc chắn rồi
cho mình hỏi làm sao để xuất đc icon trên figma thành file font?
@maitrungduc1410 ok anh =)) Thế anh phải đẻ nhanh series kubernetes nhé
@chithanh1012
Đúng như vậy mà bạn 🙄🙄, nếu không có gì thay đổi thì yarn install sẽ không chạy lại bạn ạ
@maitrungduc1410
Cảm ơn bạn, ở đây chắc do mình hiểu nhầm, mình cứ tưởng docker sẽ check nếu package.json yarn.lock ko thay đổi thì nó sẽ ko chạy lại yarn install.
mình sẽ giải thích từng trường hợp nhé.
Trường hợp 1: Dockerfile như bên dưới, copy tất tần tật mọi thứ vào trước sau đó mới chạy
yarn installỞ trường hợp này thì bất kể bạn thay đổi ở package.json hoặc trong source code JS thì câu lệnh COPY . . sẽ không được cache vì bên ngoài có sự thay đổi -> yarn install chạy lại
Trường hợp 2: COPY package.json và yarnlock vào trước, sau đó chạy
yarn installỞ trường hợp này, nếu bạn có thay đổi ở trong file package.json hoặc yarnlock thì hiển nhiên câu lệnh COPY package.json yarn.lock ./ có sự thay đổi, và kể từ đó Docker sẽ không dùng lại cache -> yarn install sẽ chạy lại
Nhưng nếu bạn không cài thêm package mới gì, mà chỉ sửa source code JS, tức là package.json và yarn.lock không đổi, vậy thì câu lệnh đầu tiên COPY package.json yarn.lock ./ Docker thấy không có gì thay đổi -> dùng cache -> tiếp theo câu lệnh
)
yarn installthì nó phụ thuộc vào package.json và yarn.lock, mà như mình vừa giải thích là không có gì đổi cả -> yarn install cũng được cache không phải chạy lại. Chỉ có dòng cuối cùng COPY . . là phải chạy lại thôi vì code JS thay đổi (mà COPY thì chạy trong 1 nốt nhạcQua 2 trường hợp trên, hẳn bạn đã thấy trường hợp 2 tối ưu hơn, nhất là file package.json và yarn.lock không thay đổi thường xuyên (có phải ngày nào ta cũng cài thêm package mới đâu đúng không 😅), mà thường chỉ có code chính (JS) thay đổi, do vậy build image sẽ nhanh hơn nhiều.
Rule ở đây là: sắp xếp làm sao những thứ ít thay đổi thì đẩy lên đầu file Dockerfile, cái nào hay thay đổi cho xuống dưới để tận dụng tối đa Docker build cache. (nhưng đừng áp dụng quá máy móc nhé
)
@maitrungduc1410 Cảm ơn bạn vì bài viết.
Bạn cho mình hỏi, nếu viết như bên dưới.
nếu mình chỉ thay đổi code ở file js, mà ko thay đổi ở package.json thì lệnh RUN yarn install có bị chạy lại từ đầu không?(ko dùng caching) Mình đang hiểu là nếu k thay đổi package.json thì 2 đoạn mã bên dưới giống nhau chứ nhỉ.
và
thanks
tks
Cám ơn tác giả, rất hữu ích!
😍😍😍
nhớ theo dõi nhé e
cám ơn bạn, nhớ theo dõi nhé
tks
@thuntt_
Mình có thắc mắc xíu, lệnh COPY . . đã thực thi copy toàn bộ file| folder trong thư mục hiện tại rồi.
Vậy sao cần 3 câu lệnh bên trên nữa bạn nhỉ.
Có nên sửa như bên dưới ko ạ?
Good