‫ส่วนนี้จะเน้นเฉพาะที่ Docker Compose
‫ซึ่งเป็นการรวมกันของเครื่องมือบรรทัดคำสั่งและไฟล์การกำหนดค่า
‫ข้อกำหนดสำหรับส่วนนี้คือคุณจำเป็นต้องรู้พื้นฐานมากมายจากส่วนต่างๆในรูปภาพและคอนเทนเนอร์
‫ขณะที่เรากำลังผ่านหลักสูตรนี้คุณอาจจะเริ่มได้ยินฉันรู้สึกตื่นเต้นมากขึ้นเรื่อย ๆ
‫ขวา?
‫ในขณะที่คุณเรียนรู้องค์ประกอบหนึ่งคุณกำลังคิด 'ผู้ชายผูกติดตั้งและปรับระดับเสียงนั้นเจ๋งจริงๆ นั่นจะช่วยฉันได้สักพัก
‫ฉันจินตนาการได้ว่าฉันจะใช้มันอย่างไร Blah blah blah blah
‫จากนั้นฉันจะมาพร้อมกับสิ่งต่อไปที่จะดีกว่าสิ่งที่คุณเพิ่งเรียนรู้
‫ในกรณีนี้มันไม่เป็นความจริงอีกต่อไป
‫นักแต่งเพลงประกอบ แล้วมันคืออะไร แล้วทำไมเราถึงสนใจ ดังนั้นบริการซอฟต์แวร์เพียงเล็กน้อยจึงเป็นเอกเทศ
‫เมื่อคุณนึกถึงตู้สินค้าของพวกเขามันเป็นโซลูชั่นกระบวนการเดียวและเราแทบจะไม่ใช้เพียงตู้เดียวในการแก้ปัญหาหรือให้บริการกับลูกค้าของเรา
‫ภาชนะของเรามักจะต้องใช้ภาชนะอื่นเช่น SQL หรือค่าคีย์ และแอปพลิเคชันอื่น
‫ๆ ที่เราจะต้องใช้ในคอนเทนเนอร์เช่นพร็อกซีหรือส่วนหน้าของเว็บหรือพนักงานด้านหลังเป็นต้น
‫จะเกิดอะไรขึ้นถ้าเรามีวิธีเชื่อมต่อชิ้นส่วนทั้งหมดของโซลูชันของเราเข้าด้วยกันโดยที่เราไม่จำเป็นต้องจำตัวเลือกการทำงานของนักเทียบท่าทั้งหมดของเรา พอร์ตจากนั้นให้หมุนทั้งหมดและฉีกออกด้วยคำสั่งเดียว
‫นั่นคือ Docker Compose
‫ก่อนที่เราจะดำน้ำเราต้องเข้าใจว่ามีสองส่วนใน Docker
‫Compose ส่วนแรกคือไฟล์ YAML และมันง่ายมากที่จะเข้าใจ
‫มันเขียนด้วย YAML และถ้าคุณไม่เคยจัดการกับ YAML นั่นเป็นภาษาการตั้งค่าที่ง่ายมาก
‫มันเกือบจะง่ายเหมือนไฟล์ INI
‫ฉันคิดว่ามันง่ายกว่าเพราะมันแสดงลำดับชั้น
‫เราจะดำดิ่งลงไป ไฟล์นั้นเป็นที่ที่คุณจะระบุคอนเทนเนอร์ทั้งหมดที่คุณต้องการเรียกใช้เครือข่ายที่คุณต้องการปริมาณใด
‫ๆ ที่คุณอาจต้องการตัวแปรสภาพแวดล้อมรูปภาพและตัวเลือกการกำหนดค่าอื่น ๆ
‫จากนั้นส่วนที่สองของ Docker Compose เป็นเครื่องมือ CLI
‫ซึ่งเป็นนักเทียบท่า - แนะนำซึ่งเราใช้ตามปกติสำหรับการพัฒนาและทดสอบในท้องถิ่นโดยใช้ไฟล์ YAML ที่เราสร้างขึ้นเพื่อทำให้คำสั่ง Docker ง่ายขึ้น
‫พูดคุยเกี่ยวกับไฟล์ Docker Compose
‫จริงๆแล้วมีหลายเวอร์ชั่นที่คุณสามารถใส่ลงในไฟล์เขียน ดังนั้นเมื่อ Docker Compose ถูกสร้างขึ้นเมื่อหลายปีก่อนมันถูกเรียกว่า
‫"มะเดื่อ" และสันนิษฐานว่าเป็นรุ่นที่ 1
‫มันไม่ได้แม้แต่จะแสดงรายการเวอร์ชันในไฟล์ เนื่องจากมันครบกำหนดและเพิ่มคุณสมบัติใหม่ให้กับไฟล์ที่สามารถมีได้เช่นเครือข่ายและโวลุ่มจึงได้สร้างคำสั่ง
‫version ซึ่งจริงๆแล้วเป็นบรรทัดแรกในไฟล์
‫ไฟล์นี้สามารถใช้งานร่วมกับ Docker Compose CLI ซึ่งเราจะพูดถึงในเวลาไม่กี่นาที
‫นี่คืออีกครั้งส่วนใหญ่สำหรับการจัดการการพัฒนาท้องถิ่นและเพียงทำให้ง่ายต่อการรับรอบในสภาพแวดล้อมของคุณบนเครื่องของคุณ
‫ตอนนี้เริ่มจากต้นปี 2560 เรามีรุ่นที่ 1 13 และทุกอย่างที่นอกเหนือจากนั้นไฟล์เหล่านี้สามารถใช้โดยตรงกับบรรทัดคำสั่งนักเทียบท่าในการผลิตด้วยการจับกลุ่ม
‫แน่นอนมีความช่วยเหลือที่ดีที่บรรทัดคำสั่งด้วย - ช่วย
‫เมื่อเราดูตัวอย่างบางส่วนทราบว่าไฟล์ Docker Compose เป็นชื่อเริ่มต้น
‫แต่คุณสามารถใช้ชื่อไฟล์ใด ๆ ที่คุณต้องการได้ตราบใดที่มันเหมาะสมและคุณใช้ -f เพื่อระบุไฟล์ที่คุณ
‫กำลังพยายามใช้
‫ถ้าฉันเปิดโปรแกรมแก้ไขและดูเทมเพลตที่นี่ฉันแค่ต้องการแสดงบางส่วนของสิ่งที่ควรจะเป็น
‫เรามีค่ารุ่นในการเริ่มต้น
‫รุ่นใหม่ล่าสุดในไตรมาสแรกของปี 2017 คือ 3 1
‫แต่ฉันมักจะทำอย่างน้อยรุ่น 2 หากคุณไม่เพิ่มบรรทัดนั้นก็จะถือว่าเป็นรุ่น 1 เสมอ
‫แต่ฉันไม่แนะนำเพราะคุณสูญเสียคุณสมบัติมากมาย
‫ดังนั้นฉันมักจะเริ่มต้นด้วยรุ่น 2 ถ้าฉันต้องการคุณสมบัติเฉพาะจากเวอร์ชัน 3 และ 3
‫1 ฉันลงเอยพิมพ์หมายเลขรุ่นในนั้น คุณจะเห็นอีกสามส่วนหลักคือบริการปริมาณและเครือข่ายใช่ไหม
‫ดังนั้นนี่คือลำดับชั้น
‫ภายใต้บริการทุกอย่างอาจมีสองหรือสี่ช่องว่าง แต่ไม่จำเป็นต้องสอดคล้องกัน
‫หากคุณเพียงแค่ค้นหา YAML บนอินเทอร์เน็ตคุณจะพบบางเว็บไซต์ที่แนะนำวิธีการจัดรูปแบบไฟล์นี้โดยเฉพาะ
‫หากคุณกำลังใช้โปรแกรมแก้ไขที่ทันสมัยมันจะพูดภาษา YAML และรู้วิธีจัดการกับไฟล์เหล่านี้และการจัดรูปแบบของพวกเขา
‫โดยปกติแล้วที่นี่คุณมีบริการอย่างน้อยที่สุดซึ่งเป็นเพียงตู้คอนเทนเนอร์
‫เหตุผลที่พวกเขาเรียกพวกเขาว่าบริการจริง ๆ เพราะแต่ละคอนเทนเนอร์ที่คุณสร้างขึ้นที่นี่คุณอาจมีหลาย ๆ
‫คอนเทนเนอร์ในการทำซ้ำ ดังนั้นพวกเขาจึงต้องการคำที่แตกต่างออกไป
‫ฉันคิดว่าบริการดีมากเพราะนั่นคือสิ่งที่คุณทำ ขวา?
‫แต่ละคอนเทนเนอร์หรือคอนเทนเนอร์ที่เหมือนกันที่คุณใช้มักจะให้บริการกับบางอย่าง
‫ภายใต้ชื่อบริการและอีกครั้งคุณสามารถเรียกมันว่าสิ่งที่คุณต้องการ
‫ไม่จำเป็นต้องเป็นชื่อของภาพหรือไม่จำเป็นต้องเกี่ยวข้องกับอะไรเลย
‫อาจเป็นบาร์นีย์สำหรับชื่อบริการ แต่จะเป็นชื่อ DNS ที่เราจะค้นหาในภายหลังจะถูกใช้ภายในเครือข่าย Docker
‫ของคุณ
‫คล้ายกับเมื่อคุณให้คำสั่ง --name แก่คำสั่ง docker run
‫ที่นี่ฉันได้แสดงให้เห็นแล้วว่าเราสามารถระบุรูปภาพได้ เราสามารถระบุคำสั่งสำรองที่จะเรียกใช้
‫หากเราต้องการเขียนทับคำสั่งจริงที่ระบุไว้ในภาพเมื่อเราเรียกใช้เราสามารถทำได้ที่นี่
‫โดยพื้นฐานแล้วทุกสิ่งที่เราทำจากคำสั่งเรียกใช้นักเทียบท่าเราสามารถบันทึกได้ที่นี่
‫เพราะนั่นคือสิ่งที่เป็นจริงเกี่ยวกับการนำงานทั้งหมดออกจากการจดจำสิ่งต่าง ๆ
‫ทั้งหมดในคำสั่งเรียกใช้นักเทียบท่าสำหรับสิ่งที่คุณกำลังทำงานอยู่ตลอดเวลา
‫หากคุณมีสภาพแวดล้อมการพัฒนาของคุณเองหรือเครื่องมือของคุณเองคุณอาจไม่ต้องการพิมพ์คำสั่งเหล่านั้นซ้ำแล้วซ้ำอีก
‫และเชลล์สคริปต์สามารถทำได้มากเท่านั้น
‫ขวา?
‫ดังนั้นไฟล์นี้จะแทนที่เชลล์สคริปต์ที่จะทำให้คำสั่งเรียกใช้นักเทียบท่าของคุณทำงานโดยอัตโนมัติ
‫นี่เป็นวิธีที่ดีกว่ามากในการทำ
‫อ่านง่ายกว่าและมีเอกสารดีกว่า
‫คุณจะสังเกตเห็นว่าอนุญาตให้มีช่องว่างในที่นี่
‫คุณสามารถมีช่องว่างในความคิดเห็นทุกที่ที่คุณต้องการ
‫หากคุณมีบริการหลายอย่างคุณต้องตรวจสอบให้แน่ใจว่าเป็นชื่อที่ไม่ซ้ำกัน
‫จากนั้นส่วนอื่น ๆ ที่เราระบุคือไดรฟ์ข้อมูลและเครือข่าย และอีกครั้งสิ่งเหล่านี้เป็นตัวเลือกเช่นกัน
‫โดยทั่วไปแล้วจะเป็นกฎเดียวกันกับเมื่อคุณเรียกใช้จากบรรทัดคำสั่ง
‫หากคุณจำเป็นต้องใช้วอลลุ่มสร้างนักสร้างหรือเครือข่ายนักเทียบท่าสร้างคำสั่งและอีกครั้งคุณไม่จำเป็นต้องทำ
‫มันขึ้นอยู่กับสถานการณ์ของคุณ
‫คุณสามารถวางไว้ที่นี่เช่นกัน
‫ลองดูที่โลกแห่งความจริงตัวอย่างง่ายๆ
‫คุณจำได้ในส่วนสุดท้ายเรามีการบรรยายที่เราใช้ Jekyll เร็วจริง ๆ เพียงทำตัวอย่างผูกติด
‫ดังนั้นนี่คือสิ่งที่ไฟล์เขียนจะมีลักษณะสำหรับคำสั่งนักเทียบท่าเรียกใช้และคุณจะเห็นว่าฉันได้ระบุภาพที่นี่
‫ฉันตั้งชื่อมันว่า Jekyll
‫ฉันให้วอลลุ่มแล้ว คุณจะสังเกตเห็นแทนที่จะใช้ pwd
‫เขียนความเข้าใจจุดจริงๆแล้วนี่คือไดเรกทอรีการทำงานปัจจุบันที่ฉันใช้อยู่
‫เพียงแค่ใช้ไดเรกทอรีนี้ที่ฉันใช้งานไฟล์เขียน จากนั้นพอร์ตหรือตัวเลือก -p
‫คุณจะสังเกตเห็นสิ่งเล็ก ๆ น้อย
‫ๆ เกี่ยวกับ YAML ซึ่งเมื่อบางสิ่งมีตัวเลือกเดียวเท่านั้นเช่นถ้ามีเพียงหนึ่งภาพสำหรับแต่ละบริการโดยทั่วไปจะเป็นรูปแบบคีย์และค่าเช่นนี้
‫หากเป็นรายการของรายการเช่นปริมาณและพอร์ตที่คุณสามารถมีได้หลายรายการคุณจะสังเกตเห็นว่าไฟล์เขียนมักจะมีพหูพจน์
‫แทนที่จะเป็นปริมาณก็เป็นปริมาณ และแทนที่จะเป็นพอร์ตก็เป็นพอร์ต
‫แล้วจะมีรูปแบบรายการด้วย -
‫ถ้าเรากระโดดเข้าไปอีกตัวอย่างรวดเร็วจริง ๆ
‫คุณจะเห็นว่าในอันนี้จริง
‫ๆ แล้วนี่คือตัวอย่างการติดตั้ง WordPress ที่คุณมีบริการฐานข้อมูลลงที่นี่ที่กำลังเรียกใช้คอนเทนเนอร์ฐานข้อมูล
‫จากนั้นเว็บเซิร์ฟเวอร์ WordPress จะขึ้นด้านบน
‫คุณจะสังเกตเห็นสิ่งเล็กน้อยที่แตกต่างเกี่ยวกับอันนี้คือเรากำลังใช้ตัวแปรสภาพแวดล้อมซึ่งจะเหมือนกับ -e
‫ที่บรรทัดคำสั่ง แต่แทนที่จะเป็นรูปแบบรายการที่เรามี
‫- นี่คือคำสั่งคีย์และค่าอื่นอีกครั้ง
‫ในรูปแบบนี้เราไม่ได้ใช้ - เราเพียงแค่ใส่รหัสและค่า
‫ถ้าฉันต้องการเพิ่มอีกฉันจะทำที่นี่
‫สิ่งเหล่านี้ทั้งหมดจะถูกส่งผ่านไปยังคอนเทนเนอร์เมื่อมันทำงานโดยใช้บรรทัดคำสั่งเขียน
‫สุดท้ายเรามีอีกตัวอย่างหนึ่ง อันนี้ซับซ้อนกว่าเล็กน้อย
‫อันที่จริงฉันเพิ่งทำงานเพื่อตั้งค่าคลัสเตอร์เซิร์ฟเวอร์สามฐานข้อมูลที่อยู่เบื้องหลัง Ghost web server
‫Ghost เป็นจริงระบบบล็อกคล้ายกับ WordPress
‫คุณจะเห็นว่าฉันมีตัวแปรสภาพแวดล้อมหลายตัวสำหรับแต่ละคอนเทนเนอร์เหล่านี้
‫ดังนั้นฉันจึงมีที่เก็บผีของฉันอยู่ด้านบน จริง ๆ
‫แล้วฉันมีสิ่งนี้เรียกว่าพร็อกซี SQL ซึ่งตั้งอยู่หน้าเซิร์ฟเวอร์ MySQL และทำหน้าที่เป็นตัวแก้ปัญหาโหลดบาลานเซอร์และเซิร์ฟเวอร์ล้มเหลว
‫ฉันมีเซิร์ฟเวอร์ MySQL สองตัว คุณจะสังเกตเห็นตัวเลือกอื่นที่นี่ที่ระบุว่า 'ขึ้นอยู่กับ'
‫และขึ้นอยู่กับว่าเป็นเรื่องธรรมดา
‫โดยพื้นฐานแล้วมันช่วยให้ Compose เข้าใจความสัมพันธ์ระหว่างบริการเหล่านี้
‫มันรู้ว่าถ้าฉันต้องเริ่มต้นผีของฉันแล้วฉันก็ต้องเริ่มคนอื่นเช่นกัน
‫คุณสามารถดูได้ที่นี่ว่าผีของฉันขึ้นอยู่กับสิ่งเหล่านี้ เราจะอธิบายรายละเอียดเกี่ยวกับวิธีการทำงานของการบรรยายในภายหลัง
‫แต่สำหรับตอนนี้อาจเป็นเรื่องย่อยมากและคำสั่งต่าง ๆ เหล่านี้และอะไรก็ตาม แต่เชื่อว่า
‫Docker มีเอกสารที่ยอดเยี่ยมจริงๆในเว็บไซต์ของพวกเขา หากคุณเพียงแค่มองหาไฟล์นักแต่งเพลงบน
‫Google คุณอาจพบไฟล์นี้กับเพลงฮิตสองสามรายการแรก
‫มันจะอยู่ภายใต้เอกสาร นักเทียบท่า เว็บไซต์ดอทคอม, ตามปกติ,
‫และมันจะเป็นเอกสารเกี่ยวกับตัวเลือกคีย์และค่าเล็ก ๆ น้อย ๆ ที่คุณมี
‫คุณจะเห็นว่าขึ้นอยู่กับฉันเพิ่งพูดถึง คุณจะเห็นสภาพแวดล้อมที่นี่ซึ่งแสดงวิธีต่างๆในการใส่ตัวแปรสภาพแวดล้อม
‫สิ่งที่ยอดเยี่ยมเกี่ยวกับเอกสารนี้คือมันมีตัวอย่างมากมายให้คุณ
‫โดยส่วนตัวฉันอยู่บนไซต์นี้ทุกวันเหมือนฉันอยู่ในหน้าตัวเลือกคำสั่งเรียกใช้นักเทียบท่าหรือหน้าตัวเลือกคำสั่งเขียน
‫ฉันอ้างอิงอยู่ตลอดเวลาเพราะมีคุณสมบัติมากมายตรงไปตรงมาทุกวันนี้ซึ่งฉันจำไม่ได้ทั้งหมด
‫ดังนั้นฉันจึงเก็บมันไว้ในที่คั่นหนังสือของฉัน
‫ตอนนี้เรามีแนวคิดทั่วไปว่ารูปแบบไฟล์เขียนอาจมีลักษณะอย่างไรให้ข้ามไปที่บรรทัดคำสั่งและเรียนรู้เกี่ยวกับเครื่องมือ Docker Compose
‫CLI