‫แล้วเราจะทำอย่างไรกับไฟล์นี้?
‫เอาล่ะออกไปกันดีกว่า เราจะเห็นในไดเรกทอรีนี้ว่าเรามีไฟล์นี้เพียงไฟล์เดียว
‫มันแทบจะเป็นขนาด k
‫เห็นได้ชัดว่ามันไม่มีอะไรเลยนอกจากข้อความ แต่เป็นคำแนะนำในการสร้างภาพของเรา
‫คำสั่งจากเมื่อฉันสร้างภาพนี้จะดึงภาพเจสซี่เดเบียนนั้นจาก Docker Hub ลงสู่แคชในเครื่องของฉัน
‫จากนั้นมันจะประมวลผลทีละบรรทัดแต่ละบทในเครื่องมือนักเทียบท่าของฉันและแคชแต่ละชั้นเหล่านั้น
‫เรามาสร้างภาพนักเทียบท่ากันแล้วเราจะติดแท็กกัน
‫จำไว้ว่าเป็นชื่อที่เราจะให้ภาพ
‫เนื่องจากฉันจะใช้เฉพาะภาพนี้ในเครื่องฉันไม่จำเป็นต้องใช้ชื่อบัญชี Docker Hub ของฉัน ฉันสามารถเรียกมันว่าอะไรก็ได้ที่ฉันต้องการ
‫ฉันจะเรียกมันว่ากำหนดเอง nginx และฉันจะใส่จุดที่นี่ซึ่งโดยทั่วไปบอกว่าสร้าง dockerfile
‫ในไดเรกทอรีนี้
‫และคุณจะเห็นว่ามันผ่านขั้นตอนนี้ไปแล้วว่าแต่ละขั้นตอนเป็นบรรทัดใน dockerfile ที่มันทำงานอยู่ภายในภาพนี้เมื่อมันกำลังสร้างมันขึ้นมา
‫แล้วมีแฮชเล็กน้อยที่ท้ายซึ่งจริง
‫ๆ แล้วแฮชจะเก็บไว้ในบิลด์แคชดังนั้นในครั้งต่อไปที่เราสร้างสิ่งนี้หากบรรทัดนั้นไม่ได้เปลี่ยนในไฟล์ dockerfile มันจะไม่รันซ้ำ
‫นี่คือหนึ่งในเวทย์มนตร์ที่นักเทียบท่าทำการปรับใช้และสร้างซอฟต์แวร์อย่างรวดเร็วจริง ๆ
‫แล้วมันฉลาดพอที่จะแคชขั้นตอนในการสร้าง
‫บ่อยครั้งหลังจากที่คุณสร้างภาพเป็นครั้งแรกและคุณเพิ่งจะเปลี่ยนซอร์สโค้ดที่กำหนดเองและไม่จำเป็นต้องเปลี่ยนแอปพลิเคชันในตัวเองสิ่งที่ติดตั้งทั้งหมดนี้เกิดขึ้นแล้ว
‫ดังนั้นคุณจะมีเวลาที่สั้นมาก
‫ตกลงดังนั้นตอนนี้เรากำลังสร้าง ใช้เวลาประมาณหนึ่งนาที
‫แต่ถ้าฉันกลับไปที่ไฟล์นั้นล่ะ? ฉันจะเพิ่มพอร์ตที่เปิดเผยเพิ่มเติม
‫ตัวอย่างเช่นฉันเพิ่งจะทำ 8080
‫ตอนนี้ไม่ได้หมายความว่า nginx ฉลาดพอที่จะรู้ว่าฉันกำลังเปิดพอร์ตนี้หรือว่ามันสื่อสารกับ nginx
‫ในทางใดทางหนึ่ง
‫ฉันแค่อนุญาตให้คอนเทนเนอร์รับแพ็คเก็ตบนพอร์ตนั้น
‫เพียงเพื่อให้แน่ใจว่ามาทำภาพนักเทียบท่า ls เราจะเห็นว่าอยู่ด้านบนสุดที่จะติดแท็กอัตโนมัติเป็นล่าสุดใช่ไหม
‫เพราะเราเรียกมันว่าชื่อที่เก็บเท่านั้น
‫เราไม่ได้ให้ชื่อแท็กโคลอนเมื่อเราติดแท็ก
‫ลองสร้างใหม่อีกครั้ง
‫ว้าวนั่นมันเร็วใช่มั้ย
‫แค่สองสามวินาทีเท่านั้น และคุณจะสังเกตเห็นว่าในแต่ละขั้นตอนมันจะบอกว่าใช้แคช เริ่มจากขั้นตอนที่ 2
‫มันจะบอกว่าใช้แคชใช้แคชใน 3 ใช้แคชที่ 4 ในวันที่ 5 จะจดจำในขั้นตอนที่ 5
‫ว่าบรรทัดนั้นแตกต่างกัน
‫ดังนั้นมันจึงเรียกใช้งานมันลงในคอนเทนเนอร์ จากนั้นในขั้นตอนที่
‫6 จะต้องเรียกใช้บรรทัดใหม่เนื่องจากนาทีต่อบรรทัดเปลี่ยนไปทุกบรรทัดหลังจากนั้นจะต้องสร้างใหม่เช่นกัน
‫สิ่งนี้จะนำมาซึ่งจุดเกี่ยวกับการเรียงลำดับบรรทัดใน Dockerfile ของคุณ เพราะถ้าคุณได้สิ่งต่าง ๆ ตามสั่งเช่นถ้าคุณคัดลอกรหัสใน
‫...
‫สมมติว่าคุณกำลังสร้างเว็บไซต์
‫หากคุณกำลังคัดลอกรหัสซอฟต์แวร์ที่คุณสร้างขึ้นที่จุดเริ่มต้นของไฟล์ทุกครั้งที่คุณเปลี่ยนไฟล์ต้นฉบับและคุณสร้างใหม่ทุกครั้งจะต้องสร้างไฟล์ทั้งหมดใน Dockerfile
‫อีกครั้ง
‫ดังนั้นจึงเป็นเรื่องสำคัญอย่างยิ่งต่อความมีสติและเวลาที่คุณมักจะเก็บสิ่งต่าง ๆ ไว้ที่ด้านบนสุดของ Dockerfile
‫ของคุณซึ่งจะเปลี่ยนแปลงน้อยที่สุดและจากนั้นสิ่งที่เปลี่ยนแปลงมากที่สุดที่ด้านล่างของ Dockerfile ของคุณ