apk add --virtual 명령의 .build-deps 란 무엇입니까?


140

무엇 .build-deps다음 명령에? 알파인 문서에서 설명을 찾을 수 없습니다. 이 파일은 사전 정의 된 파일입니까? 많은 Dockerfile에서 이것을 참조하십시오.

RUN apk add --no-cache --virtual .build-deps \
gcc \
freetype-dev \
musl-dev

RUN pip install --no-cache-dir <packages_that_require_gcc...> \

RUN apk del .build-deps

34
삭제가 파일 시스템의 새 계층에서 실행되므로 별도의 RUN 명령에 del을 사용하면 이미지 크기가 줄어들지 않습니다.
scipilot

답변:


235

설명서가 보이면

  -t, --virtual NAME    Instead of adding all the packages to 'world', create a new 
                        virtual package with the listed dependencies and add that 
                        to 'world'; the actions of the command are easily reverted 
                        by deleting the virtual package

이는 패키지를 설치할 때 해당 패키지가 글로벌 패키지에 추가되지 않음을 의미합니다. 이 변경 사항은 쉽게 되돌릴 수 있습니다. 따라서 프로그램을 컴파일하기 위해 gcc가 필요하지만 프로그램이 컴파일되면 더 이상 gcc가 필요하지 않습니다.

가상 패키지 및 모든 종속 항목에 gcc 및 기타 필수 패키지를 설치할 수 있으며 모든 가상 패키지 이름을 제거 할 수 있습니다. 아래는 사용법 예입니다.

apk add --virtual mypacks gcc vim
apk del mypacks

다음 명령은 첫 번째 명령으로 설치된 18 개의 패키지를 모두 삭제합니다.


1
또한 현재 구성된 리포지토리에 존재하지 않는 가상 패키지의 고유 이름을 사용하는 것이 중요합니다. 그렇지 않으면 패키지 설치가 성공하지만 필요한 것을 설치하지는 않습니다.
bazeusz

1
참고 : 다른이 이전 도커 이미지 레이어에서 삭제할 수 없습니다, 하나 RUN 명령에 그것을 실행해야 stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.