특정 RUN 명령에 대해 캐시 비활성화
Docker 이미지를 빌드 할 때마다 RUN
실행하려는 Dockerfile에 몇 가지 명령이 -no-cache
있습니다.
docker build --no-cache
전체 Dockerfile에 대해 캐싱을 비활성화 한다는 것을 이해합니다 .
특정 RUN 명령에 대해 캐시를 비활성화 할 수 있습니까?
캐시를 비활성화하려는 영역 앞에 무의미하고 저렴한 명령을 삽입하는 옵션이 항상 있습니다.
이 이슈 주석 에서 제안한대로 빌드 인수 블록을 추가 할 수 있습니다 (이름은 임의적 일 수 있음).
ARG CACHEBUST=1
같은 지역 전에 추가하여 각 실행 값을 수정 --build-arg CACHEBUST=$(date +%s)
A와 docker build
(여기에 현재 날짜이며, 값도 임의의 수 있습니다 실행에서 그것의 고유성을 보장하기 위해) 인수.
물론 이것은 중간 이미지의 해시 합계가 다르기 때문에 이후의 모든 블록에 대해서도 캐시를 비활성화합니다. 이는도 커가 현재 작동하는 방식을 고려하여 진정으로 선택적 캐시를 비활성화하여 사소하지 않은 문제를 비활성화합니다.
직접적으로는 아니지만 Dockerfile을 여러 부분으로 나누고 이미지를 빌드 한 다음 다음 Dockerfile의 시작 부분에있는이 이미지에서 캐싱을 사용하거나 사용하지 않고 이미지를 빌드 할 수 있습니다.
2016 년 2 월부터는 불가능합니다.
이 기능은 GitHub 에서 요청되었습니다.
또 다른 빠른 해킹은 명령 전에 임의의 바이트를 작성하는 것입니다.
RUN head -c 5 /dev/random > random_bytes && <run your command>
캐시 미스를 강제하는 5 개의 임의 바이트를 작성합니다.
빨리 대답
명령 앞에 다음을 넣으십시오. ARG CACHEBUST = 1 . 예
ARG CACHEBUST=1
RUN echo "Hi"
다음과 같이 빌드를 실행합니다.
docker build -t your-image --build-arg CACHEBUST=$(date +%s) .
설명
https://stackoverflow.com/a/49772666/3957754 (Vladislav 답변)
출처
http://dev.im-bot.com/docker-select-caching/
참고 URL : https://stackoverflow.com/questions/35134713/disable-cache-for-specific-run-commands
'IT Share you' 카테고리의 다른 글
Eclipse에서 열려있는 모든 파일을 검색하는 방법은 무엇입니까? (0) | 2020.11.18 |
---|---|
표현식 (true == true == true)이 구문 오류를 생성하는 이유는 무엇입니까? (0) | 2020.11.18 |
Observable 구독이있는 함수에서 값을 반환하는 방법은 무엇입니까? (0) | 2020.11.18 |
Linq-NHibernate (0) | 2020.11.18 |
루비 광기 : 클래스 대 객체? (0) | 2020.11.18 |