นักเทียบท่าเขียน: ตัวเลือกที่จะลบภาชนะโดยอัตโนมัติหลังจากทำงานใน docker-compose.yml


24

การdocker-compose runอ้างอิงระบุว่ามี--rmตัวเลือกให้

ลบคอนเทนเนอร์หลังจากรัน

ฉันต้องการให้เริ่มต้นนี้พฤติกรรมสำหรับบริการบางอย่างของฉันระบุในrundocker-compose.yml

ดังนั้นคำถามคือ :

  1. จะสามารถระบุได้docker-compose.ymlไหม?
  2. ถ้าทำได้ฉันจะทำอย่างไร

( INB4 "ใช้นามแฝงทุบตีลุค!" : แน่นอนว่าฉันสามารถบังคับใช้สิ่งนี้ได้docker-compose.ymlโดยการตั้งค่านามแฝงทุบตีบางอย่างเช่นalias docker-compose-run='docker-compose run --rm'แต่ฉันสนใจว่าฉันจะบังคับใช้สิ่งนั้นผ่านอย่างแน่นอนdocker-compose.ymlได้อย่างไรไม่ได้อยู่นอกขอบเขต)

คำตอบ:


10

TLDR: มันยังคงเป็นไปไม่ได้ที่ 2018-11 ; ใช้docker-compose downหรือdocker-compose run --rm

ฉันต้องการให้คำตอบที่อัปเดตสำหรับคำถามนี้เพราะเกือบ 3 ปีต่อมา วิธีนี้จะช่วยคนอื่นในการค้นหา

ฉันมีคำถามเดียวกันและนี่คือวิธีแก้ปัญหาที่ฉันพบ (รวมถึงคำถามจากคำถาม):

docker-compose down

ซึ่งทำสิ่งต่อไปนี้:

หยุดคอนเทนเนอร์และลบคอนเทนเนอร์เครือข่ายวอลุ่มและรูปภาพที่สร้างขึ้น

โดยค่าเริ่มต้นสิ่งเดียวที่ลบคือ:

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

เครือข่ายและโวลุ่มที่กำหนดเป็นภายนอกจะไม่ถูกลบออก

แม้ว่าคุณจะไม่สามารถประกาศสิ่งนี้docker-compose.ymlได้ แต่มันจะทำให้คุณรู้สึกยุ่งยาก โดยเฉพาะอย่างยิ่งกับไดรฟ์ข้อมูลและเครือข่าย

docker-compose run --rm

--rm - ลบคอนเทนเนอร์หลังจากรัน ถูกเพิกเฉยในโหมดเดี่ยว

รันคำสั่งแบบครั้งเดียวกับเซอร์วิส ตัวอย่างเช่นคำสั่งต่อไปนี้เริ่มบริการเว็บและรัน bash เป็นคำสั่ง

docker-compose run web bash

[... ] คำสั่งที่ส่งโดยการรันแทนที่คำสั่งที่กำหนดในการ กำหนดค่าบริการ

[... ] คำสั่งไม่ได้สร้างพอร์ตใด ๆ ที่ระบุในการกำหนดค่าบริการ สิ่งนี้จะป้องกันการชนกันของพอร์ตด้วยพอร์ตที่เปิดอยู่แล้ว หากคุณต้องการพอร์ตของบริการที่จะสร้างและแมปไปยังโฮสต์ให้ระบุ-ธงบริการพอร์ต

docker-compose rm -f

-f, - บังคับใช้อย่าถามเพื่อยืนยันการลบ


8

มันไม่ได้เป็นส่วนหนึ่งของDockerfileหรือdocker-compose.ymlข้อมูลจำเพาะมันเป็นเพียงตัวเลือก cli สำหรับคำสั่งเรียกใช้ดังนั้นคำตอบคือไม่ คุณจะต้องพึ่งพาสิ่งภายนอกสำหรับการบังคับใช้

หากคุณมีเครื่องมือสร้างสำหรับโครงการของคุณมักจะดีที่สุดในการห่องานนักเทียบท่ากับสิ่งนั้น ตัวอย่างเช่นโครงการไล่ระดับของเราให้งานที่เกี่ยวข้องกับนักเทียบท่าที่ตั้งค่าตัวเลือกเริ่มต้นบางอย่างเช่น--rmสำหรับการทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.