THẢO LUẬN

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

0
Oct 3rd, 2022 2:06 a.m.

@maitrungduc1410 chắc chắn rồi 😃

+1

cho mình hỏi làm sao để xuất đc icon trên figma thành file font?

0
Avatar
đã bình luận cho bài viết
Oct 3rd, 2022 1:03 a.m.

@maitrungduc1410 ok anh =)) Thế anh phải đẻ nhanh series kubernetes nhé

+1
Oct 2nd, 2022 3:49 p.m.

@chithanh1012

docker sẽ check nếu package.json yarn.lock ko thay đổi thì nó sẽ ko chạy lại yarn install

Đú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 ạ

0
Oct 2nd, 2022 3:44 p.m.

@maitrungduc1410

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

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.

0
Oct 2nd, 2022 3:34 p.m.

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

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

COPY package.json yarn.lock ./
RUN yarn install
COPY . .

Ở 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é 😉)

0
Oct 2nd, 2022 1:41 p.m.

@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.

COPY . .  
RUN yarn install

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

COPY package.json yarn.lock ./
RUN yarn install
COPY . .
0
Avatar
đã bình luận cho bài viết
Oct 2nd, 2022 12:33 p.m.

thanks

+1
Oct 2nd, 2022 12:03 p.m.

Cám ơn tác giả, rất hữu ích!

0

😍😍😍

0
Oct 2nd, 2022 10:43 a.m.

nhớ theo dõi nhé e 😉

+1
Oct 2nd, 2022 10:43 a.m.

cám ơn bạn, nhớ theo dõi nhé 😉

0
Oct 2nd, 2022 9:20 a.m.

tks

0

@thuntt_

COPY database/ database/
COPY composer.json composer.json
COPY composer.lock composer.lock

RUN composer install \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --no-dev \
    --prefer-dist

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 ạ?

COPY . .
RUN composer install \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --no-dev \
    --prefer-dist


0

Good

0

Tại sao phải mã hóa mật khẩu mà không phải là dùng mã băm ??

0
Oct 2nd, 2022 4:20 a.m.

Vừa inbox hôm trước hnay có luôn 😃)) up up up

+1
Oct 2nd, 2022 3:57 a.m.

tks

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí