Nextflow ไม่ดึงอิมเมจ Docker“ ล่าสุด”

Dec 14 2020

ฉันใช้งาน VM สองเครื่อง VM หนึ่งเครื่องใช้สำหรับการเรียกใช้ nextflow บน VM อื่นมีเซิร์ฟเวอร์สร้าง Jenkins Jenkins รับผิดชอบในการสร้างอิมเมจ Docker ใหม่และพุชอิมเมจ Docker ใหม่ไปยังรีจีสทรีคอนเทนเนอร์ Google ส่วนตัวของเรา

nextflow.configไฟล์ของฉันมีลักษณะดังนี้:

process {
    withLabel: awesome_image {
        container = "eu.gcr.io/best-project-1234/coolest_os:latest"
    }
}

หลังจากสร้างอิมเมจใหม่โดยใช้เซิร์ฟเวอร์ Jenkins ฉันกำลังเรียกใช้สคริปต์ nextflow ใหม่และฉันสังเกตเห็นว่า nextflow ยังคงใช้อิมเมจเก่าอยู่ หลังจากการวิจัยบางส่วน (https://stackoverflow.com/a/58539792/1820480) ฉันรู้ว่าสิ่งนี้เกี่ยวข้องกับความจริงที่ว่าฉันกำลังใช้latestแท็กและเนื่องจากมีภาพที่เรียกว่าล่าสุดใน VM ลำดับถัดไป Nextflow จึงใช้ภาพนั้นและไม่ต้องกังวลกับการตรวจสอบรีจิสทรี

คำถาม: ฉันจะแน่ใจได้อย่างไรว่าก่อนที่จะเรียกใช้ขั้นตอนถัดไปทุกครั้งจะตรวจสอบรีจิสทรีเพื่อหารูปภาพที่ใหม่กว่า หรือมีสคริปต์ / โปรแกรมที่ฉันสามารถเรียกใช้บน VM ที่ตรวจสอบรีจิสทรี (แทน Nextflow) ได้หรือไม่

ขอขอบคุณ.

คำตอบ

1 Steve Dec 14 2020 at 21:40

Nextflow เรียกใช้คำสั่งของคุณในคอนเทนเนอร์โดยใช้docker runไฟล์. หากคุณระบุรูปภาพที่คุณยังไม่ได้ดึงขั้นdocker runแรกให้docker pullทำการดาวน์โหลด / แปลรูปภาพ หากต้องการตรวจสอบรีจิสทรีอีกครั้งสำหรับรูปภาพที่ใหม่กว่าคุณต้องแน่ใจว่าคุณโทรหาdocker pull(สำหรับแต่ละภาพ) ก่อนเรียกใช้ Nextflow หากคุณต้องการตรวจสอบรีจิสทรีสำหรับรูปภาพที่ใหม่กว่าทุกครั้งที่เกิดกระบวนการโปรดดูด้านล่าง

หลังจากการวิจัยบางส่วนดูเหมือนว่า Docker cli (v20.10.0) ล่าสุดมีแฟล็กเพื่อแก้ไขพฤติกรรมการดึงเมื่อเรียกใช้คอนเทนเนอร์:

--pull string   Pull image before running ("always"|"missing"|"never") (default "missing")

นี่เป็นสิ่งที่ดีเพราะหมายความว่าตอนนี้ควรจะผ่านสิ่งนี้ไปได้ในnextflow.config:

docker {
    enabled = true
    runOptions = '--pull=always'
}

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