‫การบรรยายนี้จะเกี่ยวกับการเพิ่มสิ่งปลูกสร้างรูปภาพในไฟล์ Compose
‫ของคุณเพื่อให้แน่ใจว่าคุณมีภาพพร้อมที่จะไปโดยอัตโนมัติเมื่อคุณใช้คำสั่งเขียน
‫เช่นเดียวกับอาจารย์คนอื่น ๆ ในส่วนนี้คุณจำเป็นต้องมีความรู้สึกที่ดีเกี่ยวกับฟังก์ชั่น Docker container และบรรทัดคำสั่งภาพ Docker
‫สิ่งที่ Compose สามารถทำได้สำหรับคุณก็คือการสร้างอิมเมจเมื่อรันไทม์
‫มันจะดูในแคชสำหรับรูปภาพและหากมีตัวเลือกในการสร้างมันจะสร้างภาพนั้นเมื่อคุณใช้คำสั่ง up
‫มันจะไม่สร้างภาพทุกครั้ง
‫มันจะสร้างมันต่อเมื่อไม่พบมัน
‫คุณจะต้องใช้ตัวสร้างนักเทียบท่าเพื่อสร้างภาพของคุณใหม่หากคุณเปลี่ยนพวกเขาหรือคุณสามารถใช้นักเทียบท่าประกอบ -
‫สร้าง
‫เราจะเห็นว่าในเวลาไม่กี่นาที
‫สิ่งนี้ยอดเยี่ยมมากสำหรับเมื่อคุณใช้ Compose ในเครื่องและคุณมีภาพที่คุณต้องการสร้าง บางทีคุณไม่ต้องการใช้วอลลุ่มเมา
‫คุณต้องการคัดลอกไฟล์หรือบางสิ่งบางอย่างลงในภาพ
‫คำสั่งการสร้างของคุณอาจมีความซับซ้อนพอสมควร มันอาจมีตัวแปรสภาพแวดล้อมที่กำหนดเองหรือสร้างข้อโต้แย้ง
‫โดยวิธีการสร้างข้อโต้แย้งเราไม่ได้พูดคุยเกี่ยวกับ นั่นเป็นเพียงตัวแปรสภาพแวดล้อมที่มีเฉพาะในระหว่างการสร้าง
‫คุณสามารถดูเอกสารได้ นักเทียบท่า
‫com เอกสารบน Dockerfiles และมันจะพูดถึงการสร้างข้อโต้แย้งในเชิงลึก
‫ที่นี่เราจะดูตัวอย่างของวิธีที่คุณสามารถใช้ในพื้นที่นั้น
‫ฉันอยู่ในไดเรกทอรีตัวอย่าง 3 คุณสามารถดูได้ที่นี่ฉันมีไฟล์ Docker Compose ที่สร้างไว้ล่วงหน้าที่นี่
‫จริงๆแล้วฉันมี Dockerfile ชื่อ nginx Dockerfile จากนั้นมีการกำหนดค่า nginx
‫ที่คล้ายกันกับสิ่งที่เรามีก่อนหน้านี้โดยที่เราใช้ Nginx เป็น reverse proxy สำหรับเว็บไซต์ของเรา
‫หากเราเข้าไปที่ Docker Compose คุณจะเห็นว่าฉันได้ทำการออกแบบโซลูชันนี้อย่างไร
‫ฉันมีบริการสองอย่างจริง ๆ
‫หนึ่งคือพร็อกซี Nginx เหมือนก่อนหน้าและหนึ่งคือ Apache เว็บเซิร์ฟเวอร์เหมือนก่อน
‫แต่สองสิ่งนั้นแตกต่างกัน
‫แทนที่จะให้ฉันระบุภาพเริ่มต้นสำหรับ Nginx ฉันกำลังสร้างรูปแบบกำหนดเองขึ้นมา
‫คุณจะเห็นได้ว่าที่นี่ฉันได้ให้ข้อโต้แย้งบางอย่างที่ฉันบอกว่ามันจำเป็นต้องใช้ Dockerfile เป็น
‫Dockerfile ชื่อพิเศษ
‫ฉันต้องการให้สร้าง Dockerfile นั้นในไดเรกทอรีปัจจุบันที่อยู่ในนั้น ฉันต้องการให้ชื่อภาพนั้นเมื่อมันสร้างมัน nginx -
‫กำหนดเอง
‫มันกำลังจะเก็บสิ่งนั้นไว้ในแคชของฉัน
‫จากนั้นลงมาที่ด้านล่างเรามีเว็บเซิร์ฟเวอร์ที่ใช้ Apache
‫สิ่งที่ฉันทำที่นี่คือฉันได้ติดตั้งไฟล์ต้นฉบับ HTML บางไฟล์ที่ฉันมีในเซิร์ฟเวอร์ Apache
‫ดังนั้นสถานการณ์ที่นี่อาจเป็นฉันเป็นนักพัฒนาเว็บไซต์ฉันมีเว็บไซต์คงที่ที่นี่ภายใต้ไดเรกทอรี HTML
‫นี้ที่ฉันไม่จำเป็นต้องกังวลมากเกินไป
‫มันใช้เทมเพลต bootstrap เพียงเล็กน้อย
‫ฉันจะทำการแก้ไขในที่นั้นในตัวแก้ไขของฉันที่นี่ แต่ฉันรู้ว่าเมื่อฉันไปผลิตด้วยสิ่งนี้จริง ๆ แล้วมันจะนั่งอยู่ด้านหลังพร็อกซี
‫Nginx
‫ดังนั้นฉันต้องการเลียนแบบสภาพแวดล้อมการผลิตให้มากที่สุดเท่าที่จะทำได้ในพื้นที่เพื่อให้แน่ใจว่าฉันได้กำจัดข้อบกพร่องหรือปัญหาใด ๆ
‫ในกรณีนี้ฉันต้องการ Nginx นี้และฉันรู้ว่าการกำหนดค่า
‫Nginx นี้เป็นสิ่งที่พวกเขากำลังจะใช้บนเซิร์ฟเวอร์ที่ใช้งานจริงเพื่อที่ฉันจะได้ใช้งานที่นี่
‫นี่คือการกำหนดค่า Nginx เช่นเดียวกับเมื่อก่อน
‫เมื่อฉันเรียกใช้คำสั่งเขียนเรียงข้อมูลนักเทียบท่ามันจะตรวจสอบชื่อของภาพนี้ในแคชก่อน
‫หากไม่พบมันก็จะใช้คำสั่ง build เหล่านี้ที่นี่เพื่อค้นหา Dockerfile แล้วสร้างรูปภาพของฉัน คุณสามารถเห็นได้จาก Dockerfile นี้มันค่อนข้างง่ายจริง ๆ
‫มันจะใช้รุ่นเฉพาะของ Nginx แล้วมันก็จะทำการคัดลอกไฟล์
‫กำลังจะได้รับข้อมูลที่เหลือจากการกำหนดค่า Nginx จาก Docker Hub จากนั้นก็จะคัดลอกในการกำหนดค่า
‫Nginx ของฉัน
‫หากคุณจำได้ในตัวอย่างก่อนหน้านี้เราได้ทำการผูกการเชื่อมต่อเพื่อรับการกำหนดค่า Nginx ผ่านไฟล์การเขียนของเรา
‫ในกรณีนี้เราแค่ต้องการให้มันสร้างภาพทั้งหมด
‫เราไม่จำเป็นต้องเปลี่ยนการกำหนดค่าพร็อกซีนี้จริงๆดังนั้นฉันไม่จำเป็นต้องเมานต์เพื่อให้สามารถเปลี่ยนแปลงได้ตลอดเวลา
‫ฉันแค่อยากให้มันวิ่ง ขวา? ดังนั้นฉันจะสร้างมันขึ้นมา ปล่อยให้มันนั่งในแคชของภาพ
‫เมื่อสร้างครั้งแรกแล้วก็ไม่จำเป็นต้องสร้างใหม่บ่อยนัก
‫ดังนั้นฉันจะไปจากที่นั่น
‫จากนั้นเมื่อฉันแก้ไขและพัฒนาเว็บไซต์ของฉันฉันจะมีการกำหนดค่านี้เพื่อให้ฉันสามารถแก้ไขสดได้
‫ถ้าเรากลับไปที่นี่และฉันประกอบนักเทียบท่ามาลองทำสิ่งที่เกิดขึ้นกัน
‫มันสร้างเครือข่ายครั้งแรก
‫นั่นเป็นเรื่องปกติ มันทำอย่างนั้น
‫จากนั้นจะเห็นว่าบริการพร็อกซีไม่มีภาพที่ต้องการ มันจะสร้างมันขึ้นมา
‫ดังนั้นมันจึงดึง Dockerfile ออกมาและสร้างมันขึ้นมาเหมือนว่ามันจะทำคำสั่ง builder ปกติ
‫จากนั้นก็ให้คำแนะนำที่มีประโยชน์นี้แก่ฉันเพื่อให้ฉันรู้ว่ามันสร้างภาพในครั้งนี้เพราะหาไม่เจอ
‫แต่ในอนาคตถ้าฉันต้องการเปลี่ยนอิมเมจนั้นฉันจะต้องใช้ตัวสร้างนักเทียบท่าสร้างหรือนักเทียบท่าเขียนคำสั่ง - บิลด์
‫ตอนนี้มันมีภาพแล้วมันสามารถสร้างภาชนะได้จริง จากนั้นก็เริ่มต้นเว็บเซิร์ฟเวอร์และพร็อกซีเซิร์ฟเวอร์ของฉัน
‫หากทุกอย่างทำงานอย่างถูกต้องฉันควรจะได้รับ localhost มันดึงแม่แบบเริ่มต้นของฉันมาที่นี่ซึ่งเป็นแม่แบบ bootstrap จริง
‫ๆ
‫ดูเหมือนว่าทุกอย่างทำงานได้
‫ที่จริงฉันไปที่นี่และฉันสามารถเห็นบันทึกทั้งหมดของฉันขึ้นมาและเห็นได้ชัดว่ามีสินทรัพย์จำนวนมาก
‫มีรายการบันทึกสำหรับแต่ละรายการและจะผ่านพร็อกซีและผ่านเว็บเซิร์ฟเวอร์
‫เนื่องจากฉันผูกติดตั้งไดเรกทอรีนั้นเพื่อแก้ไขฉันจึงสามารถกลับไปที่เครื่องมือแก้ไขของฉันได้ ในฐานะนักพัฒนาเว็บฉันสามารถเข้าไปข้างในและบางทีคุณก็รู้ว่าแก้ไขบางอย่างบนเว็บไซต์
‫บางทีฉันอาจจะไปที่หัวข้อ bootstrap เริ่มต้นซึ่งควรจะเป็นชื่อเล็กน้อยนี้ขึ้นด้านบนที่นี่
‫ฉันจะบันทึกไฟล์นั้น จากนั้นถ้าฉันรีเฟรชเว็บไซต์ของฉันจะอัปเดตเนื่องจากการเชื่อมโยงนั้นอีกครั้ง
‫นี่เป็นตัวอย่างที่ดีของการตั้งค่าผู้พัฒนาทั่วไปที่คุณต้องการสร้างภาพที่กำหนดเองในเครื่อง
‫คุณต้องติดตั้งไฟล์บางไฟล์ลงในแอปพลิเคชันของคุณเพื่อให้สามารถแก้ไขได้ในขณะทำงาน
‫และแน่นอนถ้าสิ่งนี้ต้องการแอปพลิเคชันที่มีฐานข้อมูลสำรองฉันจะเพิ่มบริการที่สามลงที่นี่สำหรับเซิร์ฟเวอร์ฐานข้อมูล
‫จากนั้นฉันจะกลับไปทำความสะอาด
‫คุณจะสังเกตได้ว่าโดยค่าเริ่มต้นจะไม่ลบภาพนั้นจริง
‫คุณจะสังเกตเห็นที่ด้านบนที่นี่เรามีกำหนดเอง nginx ที่สร้างขึ้น แต่มีนักเทียบท่าเขียนคำสั่งลง
‫หากคุณดูความช่วยเหลือคุณจะเห็นว่ามีตัวเลือก rmi ที่ลบภาพที่อาจสร้างขึ้นหรืออาจใช้งานอยู่
‫มีตัวเลือกจริงที่นี่พูดว่า 'ลบเฉพาะภาพที่ไม่มีแท็กที่กำหนดเองที่กำหนดโดยเขตข้อมูลภาพ
‫'สิ่งหนึ่งที่ฉันสามารถทำได้ที่นี่ถ้าฉันต้องการทำให้สิ่งนี้เป็นแบบอัตโนมัติมากขึ้นเล็กน้อยคือฉันสามารถทำคำสั่งภาพนั้นได้
‫ลองเอาอันนั้น จากนั้นฉันต้องการทำความสะอาดอย่างรวดเร็วจริง ๆ
‫ฉันแค่จะลบภาพของฉัน นักเทียบท่ารูปภาพ rm ที่กำหนดเอง อย่างที่คุณเห็นมันไปอยู่ที่นั่น
‫เอาล่ะ ฉันต้องการที่จะทำให้นักเทียบท่าเขียนขึ้นอีกครั้ง
‫และครั้งนี้เราจะทำ -d
‫คุณจะสังเกตเห็นตัวอย่างของ Compose เหล่านี้ซึ่งจริง ๆ
‫แล้วตั้งชื่อคอนเทนเนอร์ปริมาตรและเครือข่ายที่มีชื่อของไดเรกทอรีเป็นชื่อโครงการ
‫นั่นคือสิ่งที่อยู่ในการเขียนเพื่อป้องกันความขัดแย้งของชื่อมันจะเพิ่มชื่อไดเรกทอรีที่จุดเริ่มต้นของสินทรัพย์ทั้งหมดเสมอเพื่อไม่ให้ขัดแย้งกับชื่ออื่น
‫คุณสามารถเปลี่ยนชื่อพร็อกซีนั้นผ่านบรรทัดคำสั่งได้
‫ถ้าคุณไปตรวจสอบเอกสารประกอบ
‫แต่จุดที่ฉันต้องการทำที่นี่คือถ้าฉันทำภาพนักเทียบท่าที่นี่คุณจะเห็นว่าจริง ๆ แล้วมันตั้งชื่อภาพของฉันให้ฉัน
‫ดังนั้นฉันไม่จำเป็นต้องใช้ตัวเลือกภาพนั้นในทางเทคนิค
‫แต่ถ้าฉันต้องการชื่อเฉพาะเพื่อที่ฉันจะได้ระบุชื่อได้ในภายหลังฉันก็ทำได้
‫เหตุผลที่ฉันนำเรื่องนี้มาใช้จริง ๆ
‫แล้วเป็นเรื่องเล็กน้อยที่สะอาดกว่าเพราะสิ่งที่ฉันสามารถทำได้คือนักเทียบท่าเขียนและจำได้ในความช่วยเหลือมันบอกว่าฉันสามารถใช้ rmi type ได้ ดังนั้นเมื่อฉันทำความสะอาดและฉันต้องการรักษาสภาพแวดล้อม Docker
‫ของฉันฉันสามารถทำ rmi ท้องถิ่น
‫สิ่งที่จะทำคือลบภาพเหล่านั้นเช่นกัน
‫คุณจะเห็นที่นี่ด้านล่างที่ลบรูปภาพ
‫ไม่ใช่สิ่งที่ฉันทำตลอดเวลา แต่บางทีถ้าฉันมีโครงการขนาดใหญ่ที่มีรูปภาพที่กำหนดเองจำนวนมากและฉันไม่ต้องการให้ระบบของฉันระเบิดเมื่อฉันไม่ได้พัฒนาโครงการนี้ฉันจะใช้
‫rmi local
‫และมันจะติดตามภาพที่กำหนดเองที่มันต้องสร้าง
‫แน่นอนที่นี่ถ้าฉันใช้ทั้งหมดมันจะลบทุกภาพที่ใช้ในโครงการนี้ซึ่งคุณอาจไม่ต้องการทำเพราะในกรณีนี้มันอาจลบเว็บเซิร์ฟเวอร์ Apache httpd
‫และคุณอาจต้องการให้ภาพนั้น อยู่เฉยๆ
‫ตกลง.
‫คุณได้เรียนรู้มากมายเกี่ยวกับการเขียนในส่วนนี้
‫เราจะใช้ Compose ตลอดหลักสูตรที่เหลือ
‫เราจะพัฒนาทักษะเหล่านี้ต่อไป