‫ก่อนหน้านี้เราได้พูดคุยเกี่ยวกับไฟล์ Docker Compose YAML
‫และในการบรรยายนี้เราจะพูดถึงบรรทัดคำสั่งเขียน
‫ข้อกำหนดสำหรับการบรรยายนี้เป็นเหมือนส่วนที่เหลือสำหรับส่วนนี้ที่คุณจำเป็นต้องรู้รูปและคอนเทนเนอร์และวิธีใช้และแนวคิดรอบ ๆ จากส่วนก่อนหน้าเพื่อให้คุณสามารถใช้สิ่งเหล่านี้ทั้งหมดภายในคำสั่งการเขียนและ
‫YAML ไฟล์. เครื่องมือบรรทัดคำสั่ง Docker
‫Compose แยกจากเครื่องมือ Docker จริง ๆ
‫จริงๆแล้วมันเป็นไบนารีที่แยกจากกัน ถ้าคุณใช้ Docker สำหรับ Windows หรือ Docker
‫สำหรับ Mac มันมาพร้อมกับมัน
‫หากคุณใช้กล่องเครื่องมือบน Windows 7 จะรวมกับกล่องเครื่องมือนั้น
‫แต่ถ้าคุณใช้งานบน Linux คุณต้องดาวน์โหลดแยกต่างหากและคุณสามารถรับได้ที่ GitHub com /
‫docker / เรียบเรียง แต่คุณยังสามารถค้นหาได้ใน Google และจะมีลิงค์ในการอ้างอิงสำหรับส่วนนี้
‫แต่ฉันควรระบุอย่างรวดเร็วว่ามันไม่ได้ถูกออกแบบมาให้เป็นเครื่องมือระดับการผลิต
‫มันเหมาะอย่างยิ่งสำหรับการพัฒนาท้องถิ่นและการทดสอบสิ่งต่าง ๆ อย่างรวดเร็วซึ่งอาจซับซ้อนในการพิมพ์คำสั่งจำนวนมากจากบรรทัดคำสั่ง
‫คำสั่งทั่วไปสองคำที่เราใช้จะประกอบไปด้วยนักเทียบท่าซึ่งอาจจะเป็นสิ่งที่คุณกำลังพิมพ์ 90% ของเวลา
‫มันเป็นร้านค้าครบวงจร
‫โดยพื้นฐานแล้วมันเป็นคำสั่งเดียวที่จะทำทุกอย่างในไฟล์การเขียนรวมถึงการสร้างโวลุ่มการสร้างเครือข่ายเริ่มต้นคอนเทนเนอร์ทั้งหมดด้วยตัวเลือกการกำหนดค่าทั้งหมด
‫จากนั้นเพื่อทำความสะอาดเมื่อคุณทำเสร็จนักเทียบท่าเขียนซึ่งคนจำนวนมากลืมที่จะทำจริงจะทำความสะอาดหลังจากที่คุณ
‫มันจะกำจัดภาชนะบรรจุลบเครือข่ายและปริมาณที่ไม่ต้องการอีกต่อไป
‫มันช่วยให้คุณด้วยสองคำสั่งนี้กระโดดเข้าและออกจากสภาพแวดล้อมต่าง ๆ เพื่อการพัฒนาอย่างรวดเร็ว
‫นี่คือที่ฉันได้รับความสนใจจากนักพัฒนาที่ใช้ในการใช้คนพเนจรและเครื่องมืออื่น ๆ
‫เพื่อกำหนดสภาพแวดล้อมที่ซับซ้อนในท้องถิ่นที่พวกเขาต้องการสำหรับการพัฒนา
‫เมื่อฉันแสดง Docker Compose และไฟล์
‫Compose และวิธีใช้งานร่วมกับ Dockerfile ง่าย ๆ มันก็เริ่มคลิกเพื่อให้พวกเขารู้ว่านี่อาจเป็นวิธีที่ดีกว่า
‫และไม่ต้องใช้เวลาในการตั้งค่า VM
‫ต่าง ๆ หรือความซับซ้อนในการจัดการสภาพแวดล้อมของเครื่องเสมือน
‫เพียงเพื่อให้คุณได้ลิ้มรสเล็กน้อยหากคุณมีโครงการที่คุณมีกระบวนการพัฒนาแบบใหม่โดยทั่วไปซึ่งทั้งหมดเกี่ยวกับการเรียนรู้วิธีการรับเครื่องมือที่เหมาะสมสำหรับระบบของพวกเขาและดาวน์โหลดเครื่องเสมือนที่ถูกต้องและอุปกรณ์เสริมที่เหมาะสม และทุกสิ่งที่โดยปกติแล้วพวกเขาเพียงแค่ต้องสร้างสภาพแวดล้อมที่จำลองแบบด้วย
‫Docker
‫Compose มันเป็นเรื่องง่ายเหมือนกับการโคลนสภาพแวดล้อมที่มีไฟล์การเขียนของคุณจาก repo
‫บางแห่งแล้วเรียกใช้คำสั่ง comper up
‫มันง่ายมาก ๆ
‫ลองกระโดดเข้าไปเล่นกันเถอะ ฉันอยู่ในไดเรกทอรีตัวอย่าง 2 ไดเรกทอรีตัวอย่าง
‫1 เป็นเพียงตัวอย่างที่เราเห็นในการบรรยายครั้งสุดท้าย
‫แต่ในอันนี้เราจะสามารถเรียกใช้อันนี้และได้รับผลลัพธ์ที่รวดเร็ว
‫ฉันแค่ไปที่นักเทียบท่าแต่งขึ้น
‫ที่จริงก่อนที่เราจะทำอย่างนั้นให้ฉันแค่แสดงให้คุณเห็นว่ามันคืออะไร
‫นี่มีสองบริการหรือสองคอนเทนเนอร์และอันแรกคือเซิร์ฟเวอร์ Nginx ซึ่งถูกกำหนดค่าเป็นพร็อกซีในกรณีนี้
‫และนั่นจะเป็นการฟังบนพอร์ต 80 ของฉันบนเครื่องท้องถิ่นของฉัน
‫คุณจะสังเกตเห็นว่ามีคำสั่งเสียงที่ฉันทำ bind mount กับไฟล์ในไดเรกทอรีนี้เรียกว่าไฟล์กำหนดค่า nginx และจริง
‫ๆ แล้วเป็นไฟล์เล็ก ๆ
‫เราไม่ทราบว่าไฟล์ดังกล่าวทำงานอย่างไร
‫มันแสดงให้เห็นว่าในกรณีนี้ฉันใช้ไฟล์กับสภาพแวดล้อมท้องถิ่นของฉัน สมมติว่าไดเรกทอรีนี้เป็นที่เก็บ
‫Git ที่เก็บไฟล์ปรับแต่งเหล่านี้ให้ฉัน มันช่วยให้ฉันสามารถแมปไฟล์นั้นในคอนเทนเนอร์และในที่สุดคุณจะเห็นว่า
‫'ro' ซึ่งหมายความว่าอ่านได้อย่างเดียวซึ่งหมายความว่าฉันไม่สามารถเปลี่ยนมันในคอนเทนเนอร์ได้
‫ไม่จำเป็นต้องมีที่นี่
‫ฉันแค่ต้องการแสดงให้คุณเห็นว่าเป็นวิธีที่คุณจะทำในกรณีนี้ ไฟล์กำหนดค่านั้นบอก Nginx ว่า
‫'แทนที่จะเป็นเว็บเซิร์ฟเวอร์ฉันอยากให้คุณเป็น reverse proxy และนั่งอยู่หน้าเซิร์ฟเวอร์อื่น' ซึ่งในกรณีนี้เรากำลังเรียกเว็บเซิร์ฟเวอร์ของเราพร้อมบริการ
‫ชื่อและมันกำลังรันเซิร์ฟเวอร์ Apache 2 ซึ่งเป็นอิมเมจ httpd จากที่เก็บรูปภาพอย่างเป็นทางการบน Docker
‫Hub
‫คุณสามารถดูได้ที่ด้านบนฉันได้ระบุรุ่นที่นี่ นั่นเป็นวิธีที่ฉันจะทำเช่นนั้น
‫ด้านในของเส้นภาพ
‫ดังนั้นสิ่งที่ควรเกิดขึ้นคือเมื่อฉันพิมพ์นักเทียบท่านี้แต่งขึ้นมันควรเริ่มต้นภาชนะทั้งสอง ควรสร้างเครือข่ายส่วนตัวสำหรับพวกเขาสองคน
‫มันจะผูกติดไฟล์นั้นโดยอัตโนมัติ
‫มันจะเปิดพอร์ตและมันจะเริ่มทิ้งการบันทึกออกไปที่หน้าจอของฉัน
‫คุณจะเห็นว่ามันพูดว่า 'สร้างภาชนะทั้งสองนี้ 'มันกำลังสร้างเครือข่าย
‫คุณจะสังเกตเห็นในไฟล์ของฉันฉันไม่ได้ระบุพื้นที่เครือข่ายหรือพื้นที่ปริมาณเพราะพวกเขาไม่จำเป็นต้องจริง
‫พวกเขาจำเป็นเท่านั้นถ้าฉันต้องทำสิ่งที่กำหนดเองในเครือข่ายเช่นอาจเปลี่ยนที่อยู่ IP เริ่มต้นหรือเปลี่ยนไดรเวอร์เครือข่ายที่ใช้
‫หรือในกรณีปริมาณฉันสามารถสร้างไดรฟ์ข้อมูลที่มีชื่อหรือใช้ไดรฟ์ข้อมูลไดรฟ์ข้อมูลที่แตกต่างกันและเราจะได้รับทั้งหมดในภายหลังในส่วนขั้นสูง
‫เพียงแค่คุณรู้นั่นคือวิธีที่ไฟล์เหล่านี้สามารถทำได้ง่าย
‫โดยปกติคุณไม่ต้องการทุกสิ่ง
‫คุณสมบัติเหล่านั้นอยู่ที่นั่นหากคุณต้องการ แต่โดยปกติแล้วคำสั่งเล็ก ๆ น้อย ๆ เหล่านี้จะทำให้คุณไปได้
‫ฉันทำอะไรลงไป? นี่คือตอนนี้เซิร์ฟเวอร์ Apache ของฉันและเซิร์ฟเวอร์ Nginx ของฉัน
‫คุณจะสังเกตเห็นว่าบันทึกมีสีจริงที่นี่
‫นั่นเป็นคุณสมบัติที่เรียบง่ายของ Compose
‫ที่คุณไม่จำเป็นต้องออกนอกกล่องด้วย Docker นั่นคือมันจะบันทึกคอนเทนเนอร์ทั้งหมดที่มันทำงานอยู่บนหน้าจอในเบื้องหน้า
‫ฉันสามารถทำสิ่งเดียวกับที่ฉันทำกับนักเทียบท่าและเรียกใช้นักเทียบท่าที่เขียนขึ้น - d
‫ซึ่งจะทำงานในพื้นหลัง แต่มันก็เป็นเรื่องดีที่ได้เห็นเมื่อฉันกำลังพัฒนาหรือทดสอบสิ่งของในพื้นที่ว่าฉันมีบันทึกของฉันอยู่บนหน้าจอ
‫ถ้าฉันข้ามไปที่เบราว์เซอร์ของฉันแล้วไปที่ localhost คุณจะเห็นว่ามันบอกว่า 'ใช้งานได้ 'นั่นคือเซิร์ฟเวอร์
‫Apache ที่ตอบกลับไม่ใช่เซิร์ฟเวอร์ Nginx
‫ทราฟฟิกกำลังผ่านพร็อกซีย้อนกลับ Nginx
‫มันซ้ำทราฟฟิกไปยังเซิร์ฟเวอร์ Apache เซิร์ฟเวอร์ Apache
‫กำลังตอบสนองกับไฟล์ HTML พื้นฐานที่เป็นค่าเริ่มต้นเพราะเราไม่ได้เปลี่ยนแปลงอะไรเลย
‫จากนั้น Nginx ก็ทำมันกลับมาหาฉัน
‫ดังนั้นจึงเป็นเว็บเซิร์ฟเวอร์พื้นฐานของคุณซึ่งเป็นเว็บพร็อกซีการกำหนดค่า
‫คุณสามารถบอกได้ว่าทราฟฟิกชนทั้งคู่ พวกเขาทำงานผ่านพร็อกซีจริง ๆ
‫เนื่องจากพร็อกซีเป็นสีที่แตกต่างกันที่นี่ บันทึกกำลังสูบฉีดออกมาที่นี่ด้วยสีแบบสุ่มสำหรับแต่ละคอนเทนเนอร์ในการตั้งค่าของฉันเพื่อให้ฉันสามารถเห็นสิ่งที่เกิดขึ้นได้อย่างง่ายดาย
‫หากฉันกดรีเฟรชหลายครั้งคุณจะเห็นปริมาณการใช้งานปรากฏขึ้น จากนั้นจะกดปุ่มพร็อกซีก่อนจากนั้นจึงเปิดเว็บเซิร์ฟเวอร์ส่วนหลัง
‫หากฉันต้องการหยุดที่นี่ฉันจะกด Control c เพื่อหยุดการเขียนในหน้าจอของฉัน
‫ฉันสามารถเรียกใช้อีกครั้งด้วย -d เพื่อเรียกใช้ในพื้นหลัง
‫คุณสามารถเห็นที่นี่ที่ฉันสามารถรีเฟรชมันและยังคงมี ฉันสามารถทำนักเทียบท่าเขียนบันทึกเพื่อดูผลลัพธ์เดียวกันกับบันทึกที่ฉันเห็นเมื่อไม่นานมานี้
‫คำสั่งมากมายที่คุณอาจใช้ใน Docker นั้นอยู่ใน Docker Compose เช่นกัน สิ่งที่
‫Compose กำลังทำอยู่นั้นคือการพูดคุยกับ Docker API
‫ในพื้นหลังในนามของ Docker CLI มันเป็นเหมือนการแทนที่สำหรับ Docker CLI ที่ยังคงพูดคุยกับเซิร์ฟเวอร์ Docker
‫API ในแบ็กเอนด์
‫แน่นอนความช่วยเหลือที่ดีที่นี่นักเทียบท่าช่วยเขียนแสดงคำสั่งทั้งหมดที่ฉันสามารถเรียกใช้ได้
‫คุณจะเห็นรูปลักษณ์เหล่านี้จำนวนมากคุ้นเคยเพราะคำสั่ง docker
‫เทียบเท่ากับการใช้บริบทของการกำหนดค่าของไฟล์เขียน
‫ฉันต้องการล้างทั้งหมดนี้เพราะพวกเขายังคงทำงานอยู่ ฉันสามารถทำนักเทียบท่าเขียน ps ที่นี่ซึ่งจะแสดงให้ฉันเห็นว่าทั้งสองตู้ของฉันกำลังทำงานอยู่
‫ฉันสามารถทำนักเทียบท่าเขียนด้านบนเพื่อแสดงรายการบริการทั้งหมดที่ทำงานอยู่ในนั้นในรูปแบบผลลัพธ์ที่ดี
‫มันเท่ห์มาก
‫จากนั้นในที่สุดฉันก็สามารถทำท่าเทียบเรือเพื่อหยุดและทำความสะอาดสิ่งที่ฉันเพิ่งเริ่มต้น
‫คุณจะเห็นว่ามันกำลังบอกสิ่งที่ทำไปแล้ว ทำความสะอาดมันหมดแล้ว
‫เยี่ยมมาก
‫นี่เป็นเพียงรสชาติเล็กน้อย
‫พวกเรากำลังจะใช้นักแต่งเพลงมากมายตลอดช่วงเวลาที่เหลือของหลักสูตรนี้เพื่อการพัฒนาและทดสอบในท้องถิ่น
‫จากนั้นเราจะใช้ไฟล์นักเขียนต่อไปเรื่อย ๆ ในขณะที่เราเปลี่ยนไปสู่ข้อกังวลเกี่ยวกับการผลิตสำหรับวิธีที่เราปรับใช้สภาพแวดล้อมที่ซับซ้อนด้วยไฟล์ YAML แบบง่าย