.build-deps สำหรับ apk add --virtual command คืออะไร?


142

อะไรคือสิ่งที่.build-depsอยู่ในคำสั่งดังต่อไปนี้หรือไม่? ฉันไม่พบคำอธิบายในเอกสาร Alpine นี่คือไฟล์ที่กำหนดไว้ล่วงหน้าหรือไม่? เห็นสิ่งนี้อ้างถึงใน Dockerfiles จำนวนมาก

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
หมายเหตุการมี del ในคำสั่ง RUN แยกต่างหากจะไม่ลดขนาดรูปภาพเนื่องจากการลบจะถูกเรียกใช้ในเลเยอร์ใหม่ในระบบไฟล์
scipilot

คำตอบ:


237

หากคุณเห็นเอกสาร

  -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 เดียวมิฉะนั้นจะไม่สามารถลบออกจากเลเยอร์อิมเมจ Docker ก่อนหน้าstackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.