‫ในส่วนนี้เราได้กล่าวถึง Swarm เป็นอย่างมาก ฝูงกองและความลับเป็นเหมือนตอนจบของคุณสมบัติที่ยอดเยี่ยมที่สามารถทำให้สิ่งต่าง
‫ๆ ง่ายขึ้นในการผลิตสำหรับเรา
‫ฉันต้องการแสดงให้คุณเห็นว่ามันอาจจะเป็นอย่างไรถ้าคุณใช้ไฟล์ Compose
‫ของคุณจัดระเบียบไฟล์เหล่านั้นสองสามวิธีและนี่คือสิ่งที่ฉันเรียกว่าการใช้ชีวิตในฝัน
‫ปรากฎว่าคุณสามารถใช้ไฟล์เดียวเพื่อทำสิ่งต่างๆมากมาย แต่บางครั้งความซับซ้อนของคุณก็เพิ่มขึ้นและคุณจะต้องมีไฟล์ Compose
‫หลายไฟล์
‫ฉันต้องการที่จะวิ่งผ่านอย่างรวดเร็วจริง
‫คุณไม่จำเป็นต้องทำสิ่งนี้ด้วยตัวเองหากคุณไม่ต้องการ
‫ฉันแค่จะแสดงให้คุณเห็นตัวอย่างของวิธีการเขียนไฟล์เหล่านี้อาจทำงานร่วมกันเพื่อสร้างสภาพแวดล้อมของคุณในขณะที่คุณไป
‫ในสถานการณ์สมมตินี้เราจะใช้นักเทียบท่าประกอบกับสภาพแวดล้อมการพัฒนาท้องถิ่นของเรา
‫เราจะใช้นักเทียบท่าเขียนการกำหนดค่าและไฟล์สำหรับสภาพแวดล้อม CI ของเราเพื่อทำการทดสอบการรวม
‫จากนั้นเมื่อเราอยู่ในการผลิตเราจะใช้ไฟล์เหล่านี้สำหรับการปรับใช้สแต็คนักเทียบท่าเพื่อปรับใช้สภาพแวดล้อมการผลิตจริงด้วยสแต็ค
‫ดังนั้นฉันอยู่ในเครื่องของฉันและเราจะใช้ตัวอย่างก่อนสถานการณ์ Drupal กับเซิร์ฟเวอร์ฐานข้อมูลและส่วนหน้าเว็บ
‫เรามี Dockerfile ที่เราใช้ในการบ้านก่อนหน้านี้ เรากำลังสร้างการกำหนดค่า drupal แบบกำหนดเองที่เรียบง่าย
‫แต่เรียบง่ายด้วยเทมเพลต
‫จากนั้นเราจะมีไฟล์เขียนเริ่มต้นนี้
‫สิ่งนี้เรียกว่าการแทนที่สิ่งที่เรากำลังจะทำ
‫การแทนที่คือที่ที่ฉันมีไฟล์เขียนมาตรฐาน Docker และตั้งค่าเริ่มต้นที่เหมือนกันในทุกสภาพแวดล้อมของฉัน
‫จากนั้นฉันมีไฟล์แทนที่นี้โดยค่าเริ่มต้นคือ Docker Compose ถ้ามันตั้งชื่อตามชื่อนี้
‫แทนที่. yml มันจะนำสิ่งนี้เข้ามาโดยอัตโนมัติเมื่อใดก็ตามที่ฉันประกอบนักเทียบท่า
‫คุณจะเห็นว่าในสถานการณ์นี้เราถือว่าการพัฒนาท้องถิ่นเพราะเราต้องการคำสั่งที่พิมพ์ด้วยมือเราจะพิมพ์ให้ง่ายที่สุดในพื้นที่
‫โดยปกติในสภาพแวดล้อม CI ของคุณมันเป็นแบบอัตโนมัติทั้งหมดดังนั้นเราจึงไม่สนใจว่าคำสั่งเหล่านั้นจะยาวขึ้นไปอีกเล็กน้อย
‫แต่เราต้องการในท้องถิ่นจริงๆคือนักเทียบท่าที่เรียบง่ายแต่งขึ้น
‫สิ่งที่เจ๋งที่สุดคือ Docker Compose จะอ่านไฟล์นี้โดยอัตโนมัติและจะใช้สิ่งนี้เหนือหรือแทนที่การตั้งค่าใด
‫ๆ ในไฟล์ Docker Compose yml
‫ดังนั้นที่นี่สังเกตว่าฉันไม่มีชื่อภาพเพราะมันถูกระบุไว้ที่นี่แล้ว
‫ในไฟล์แทนที่นี้ฉันเขียนทับโดยบอกว่าฉันต้องการสร้างภาพในเครื่องโดยใช้ Dockerfile ในไดเรกทอรีปัจจุบันนี้
‫ฉันต้องการสร้างพอร์ตใน 8080 เพื่อการพัฒนาท้องถิ่น และฉันกำลังตั้งค่าวอลลุ่มบางส่วนและคุณจะสังเกตว่าฉันให้ตัวอย่างที่นี่ของการผูกติดที่ฉันอาจทำธีมที่กำหนดเอง
‫และฉันต้องการที่จะติดตั้งธีมของฉันบนโฮสต์ของฉันลงในภาชนะเหมือนที่เราทำในส่วนก่อนหน้าเพื่อให้ฉันสามารถเปลี่ยนมันในเครื่องแล้วดูได้ทันทีบนเซิร์ฟเวอร์
‫และสำหรับตัวอย่างนี้ฉันไม่รู้วิธีพัฒนาธีมใน Drupal
‫ฉันไม่แน่ใจว่าถ้าฉันเปลี่ยนไฟล์ในนั้นไฟล์นั้นจะถูกสะท้อนโดยอัตโนมัติ
‫ฉันแค่ต้องการแสดงตัวอย่างว่าคุณพัฒนาเว็บอย่างไรโดยทั่วไปนี่เป็นวิธีที่คุณจะทำได้โดยไม่ต้องหยุดและเริ่มเขียนทุกครั้ง
‫ด้านล่างนี้เรามีตัวแปรสภาพแวดล้อมและการตั้งค่าความลับเหมือนเมื่อก่อน
‫เรามีปริมาณที่กำหนดไว้และคุณจะเห็นด้านล่างฉันมีความลับตามไฟล์เพราะเมื่อเราทำการพัฒนาในพื้นที่เราต้องใช้ความลับของไฟล์
‫สิ่งต่าง ๆ น่าสนใจเล็กน้อยเมื่อฉันดูไฟล์นี้หรือทดสอบไฟล์ วิธีที่ใช้ในการทำงานคือจำไว้ว่า
‫แทนที่.
‫yml จะรับสายโดยอัตโนมัติโดยบรรทัดคำสั่ง Docker Compose
‫ในการทดสอบหรือทดสอบฉันจะต้องระบุด้วยตนเอง
‫ดังนั้นสำหรับการทดสอบเราจะต้องใช้คำสั่ง -f
‫หากคุณจำได้จากส่วนก่อนหน้านี้ -f คือเมื่อเราทำนักเทียบท่าเขียนว่าเราต้องการระบุไฟล์ที่กำหนดเอง
‫ฉันจะแสดงให้คุณเห็นในอีกไม่กี่นาที
‫จากนั้นในการผลิตเนื่องจากเราจะไม่ได้มีบรรทัดคำสั่ง Docker
‫Compose บนเซิร์ฟเวอร์ที่ใช้งานจริงสิ่งที่เรากำลังจะทำที่นี่คือเราจะใช้คำสั่ง compose compose
‫คำสั่ง config จริง ๆ แล้วจะทำการส่งออกโดย squishing ร่วมกันหรือรวมเอาท์พุทของหลายไฟล์
‫config
‫นั่นจะเจ๋งจริงๆ
‫อย่างรวดเร็วจริง ๆ ไฟล์ทดสอบมีเพียง drupal และ Postgres
‫ลองนึกภาพว่านี่เป็นวิธีแก้ปัญหา Jenkins CI หรือ Codeship
‫CI ของคุณซึ่งฉันต้องการให้มันสร้างภาพทุกครั้งที่ฉันส่งรหัสและฉันต้องการเรียกมันว่านี้และฉันต้องการให้มันอยู่ในพอร์ตนี้เพื่อการทดสอบ
‫จากนั้นฉันจะใช้รหัสผ่านปลอม
‫แต่ฉันไม่จำเป็นต้องกำหนดปริมาณใด ๆ เพราะฉันจะไม่พยายามเก็บข้อมูลปริมาณที่มีชื่อเพราะอีกครั้งมันเป็นเพียงแพลตฟอร์ม CI
‫ทันทีที่มันผ่านการทดสอบหรือล้มเหลวในการทดสอบมันจะกำจัดทุกอย่าง
‫จากนั้นในสถานการณ์นี้คุณอาจเห็นว่าจริง ๆ แล้วฉันได้รับสถานการณ์ตัวอย่างข้อมูลซึ่งอาจจะอยู่ในโซลูชัน
‫CI ของคุณคุณมีฐานข้อมูลอยู่ที่นั่นซึ่งมาจากที่เก็บ Git แบบกำหนดเองหรือบางทีอาจเป็นการดาวน์โหลด
‫FTP หรือมีบางอย่างเกิดขึ้นระหว่างการเริ่มต้น
‫CI ของคุณซึ่งจะดาวน์โหลดไฟล์ฐานข้อมูล และแทนที่จะต้องสร้างฐานข้อมูลของเราทุกครั้งที่เราทำการทดสอบ
‫CI เราจะเมานต์ไดเร็กทอรี่ของข้อมูลตัวอย่างนี้ไปยังที่ซึ่งข้อมูล postgres ของเราควรจะเป็น
‫และด้วยวิธีนี้เราสามารถรับประกันได้ว่าเรามีข้อมูลตัวอย่างเดียวกันทุกครั้งที่เราทำการทดสอบ CI
‫ฉันจะไม่เข้าไปในนั้นต่อไป ฉันแค่ต้องการแสดงให้เห็นว่าอาจเป็นว่าไฟล์นี้สำหรับ CI
‫จะแตกต่างกันอย่างไร
‫จากนั้นในการผลิตเรามีข้อกังวลด้านการผลิตตามปกติทั้งหมดของเรา เรากำลังระบุปริมาณสำหรับข้อมูลเฉพาะของเรา
‫เรากำลังระบุความลับของเรา และสังเกตลงที่ด้านล่างเรามีความลับภายนอก
‫เพราะเราจะใส่ความลับเข้าไปแล้วผ่านทางบรรทัดคำสั่งเหมือนที่เราทำในการมอบหมายก่อนหน้านี้
‫จุดนี่คือการกำหนดค่าทั้งสามนี้จะแตกต่างกันในทางใดทางหนึ่ง แต่พวกเขาทั้งหมดเกี่ยวข้องกับการกำหนดค่าหลักหรือการกำหนดค่าฐานซึ่งเพิ่งกำหนดสองบริการและภาพของพวกเขา
‫คุณสามารถดูที่นี่ นี่คือสิ่งเตือนความทรงจำ
‫ลองออกจากสิ่งนี้แล้วรันคำสั่งสองสามคำ
‫ถ้าฉันดูในไดเรกทอรีนี้คุณจะเห็นว่าฉันมีไฟล์ฐานและไฟล์แทนที่สามไฟล์
‫อีกครั้งจำไว้ว่าแทนที่ yml เป็นค่าเริ่มต้น
‫ถ้าฉันเป็นนักเทียบท่าแต่งขึ้นสิ่งที่มันจะทำที่นี่จริงๆคือใช้นักเทียบท่าแต่ง yml ก่อนจากนั้นจะทำการซ้อนทับทับ
‫yml หนึ่งรายการอยู่ด้านบน
‫ฉันต้องการใส่ -d เพื่อให้เราสามารถดูแลได้อย่างรวดเร็วหลังจากเริ่มต้น ฉันจะทำการเทียบท่าตรวจสอบภาพ drupal
‫และสิ่งที่ฉันต้องการแสดงให้คุณเห็นอยู่ที่นี่มีเมานต์ทั้งหมดที่ระบุไว้
‫ดังนั้นเราจึงรู้ว่ามันใช้ไฟล์แทนที่เพราะไฟล์แทนที่เป็นตำแหน่งที่เรากำหนดการเมาท์เหล่านี้ทั้งหมด
‫ดังนั้นเราจึงรู้ว่ามันหยิบขึ้นมา
‫เห็นได้ชัดว่าถ้ามันไม่ได้รับฐานหนึ่งก็ไม่ได้รู้ว่าภาพที่จะใช้ดังนั้นมันจะบ่นกับเราและบอกว่าไฟล์เขียนไม่สมบูรณ์
‫อันนั้นใช้ได้ผล
‫มาลงมือทำกันเถอะด่วน
‫ถ้าเราจะทำตามคำสั่งที่เราต้องการสำหรับโซลูชัน CI ของเราสิ่งที่เราต้องทำในโซลูชัน
‫CI ของเราคือเพื่อให้แน่ใจว่า Docker Compose
‫อยู่ที่นั่นและติดตั้งและพร้อมใช้งานเพื่อให้เราสามารถทำคำสั่งนักเทียบท่าได้ จากนั้นเราสามารถระบุ
‫-f และลำดับของ f คือไฟล์ฐานจะต้องเป็นอันดับแรกเสมอ
‫ดังนั้นนักเทียบท่าเขียน yml แล้วทดสอบนักเทียบท่าประกอบ
‫หากเราทำสิ่งนี้ด้วยการสิ้นสุดและ -d และจากนั้นฉันไปและตรวจสอบ drupal
‫เดียวกันคุณจะสังเกตเห็นว่าไม่มีการผูกติด
‫มันหายไปอย่างสมบูรณ์เพราะในไฟล์ทดสอบเราไม่ได้ระบุ
‫เราไม่ต้องการ Drupal ในการบันทึกข้อมูลเพราะมันจะถูกทิ้งในตอนท้ายของการดำเนินการ CI
‫ของเรา
‫และประการที่สามเรามีการกำหนดค่าการผลิต
‫การกำหนดค่าการผลิตจะแตกต่างกันเล็กน้อย
‫ฉันจะไปถึงลูกศรขึ้นแล้วที่นี่ฉันจะทำกระทุ้ง แทนที่จะเป็นคำสั่ง
‫up สิ่งที่ฉันต้องการทำที่นี่คือ config
‫หากคุณเพียงแค่ดูที่ความช่วยเหลืออย่างรวดเร็วจริง ๆ สำหรับการตั้งค่ามันมีเพียงสองตัวเลือกและไม่มีตัวใดตัวหนึ่งที่เกี่ยวข้องในสถานการณ์นี้
‫สิ่งที่เราต้องการทำเพียงแค่เรียกใช้การตั้งค่าด้วยตัวเอง สิ่งที่มันจะทำจริง
‫ๆ คือดูไฟล์ทั้งสองแล้วดันเข้าด้วยกันเป็นไฟล์ Compose ไฟล์เดียว
‫ดังนั้นสิ่งที่เราสามารถทำได้ที่นี่เพียงแค่เรียกใช้คำสั่งนี้ที่ใดที่หนึ่งในโซลูชัน CI ของเรา
‫จากนั้นให้มันส่งออกไปยังไฟล์บางทีคุณอาจจะรู้อะไรบางอย่างเช่นนั้น
‫ไฟล์เอาต์พุตนั้นจะเป็นไฟล์ที่เราจะใช้อย่างเป็นทางการในการผลิตเพื่อสร้างหรืออัพเดตสแต็กของเรา
‫อย่างไรก็ตามฉันต้องการที่จะโยนในข้อแม้เล็ก ๆ น้อย ๆ ที่นี่
‫นี่คือสิ่งที่ค่อนข้างใหม่
‫เรารู้ว่าความลับและ Swarm Stacks นั้นค่อนข้างใหม่
‫พวกเขามีอายุเพียงสองสามเดือน
‫ในฐานะของการบันทึกนี้
‫มีขอบขรุขระสองสามอัน
‫เราเพิ่งรันคำสั่ง config นั้นและคุณจะสังเกตได้ว่าความลับนั้นไม่มีอยู่ในนั้น
‫นั่นเป็นข้อผิดพลาดในปัจจุบัน
‫ฉันทำงานร่วมกับทีมนักเทียบท่าเพื่อดูว่าเราไม่สามารถกำจัดข้อผิดพลาดนั้นได้หรือไม่
‫ดังนั้นเมื่อถึงเวลาที่คุณอ่านมันอาจจะได้รับการแก้ไขแล้ว
‫ตรวจสอบให้แน่ใจว่าคุณตรวจสอบผลลัพธ์ของบรรทัดการกำหนดค่าก่อนที่จะไปปรับใช้ในการผลิต
‫ประการที่สองตัวเลือก Compose Extends ซึ่งฉันไม่ได้กล่าวถึงที่นี่เป็นอีกวิธีหนึ่งในการแทนที่ไฟล์ Compose
‫เหล่านี้ที่คุณใช้ไฟล์ override และคุณกำหนดส่วนขยายใน
‫มันเป็นการประกาศที่มากกว่านิดหน่อยดังนั้นจึงง่ายต่อการเข้าใจ ฉันจะให้ลิงค์ในการอ้างอิงสำหรับส่วนนี้
‫เพิ่งรู้ว่าตัวเลือก Extends ยังไม่สามารถใช้งานได้ใน Swarms stack
‫ฉันไม่ได้พูดถึงที่นี่เพราะมันไม่ได้ให้วงจรชีวิตของแอพแบบเต็มที่คุณหวังไว้ แต่จริงๆแล้วฉันคาดหวังให้พวกเขาทำบางสิ่งบางอย่างเกี่ยวกับเรื่องนี้
‫เช่นเพิ่มลงใน Swarm หรือสร้างเวิร์กโฟลว์ที่ดีขึ้น
‫เพราะนั่นเป็นความคิดที่เราพยายามทำกับเครื่องมือเหล่านี้ทั้งหมดคือการมีวงจรชีวิตที่สมบูรณ์และง่ายจากการพัฒนาไปจนถึงการทดสอบไปสู่การผลิตด้วยการกำหนดค่าชุดเดียวกันในรูปภาพชุดเดียวกัน
‫.
‫ฉันหวังว่าสิ่งนี้จะทำให้คุณนึกถึงว่าคุณจะทำให้แอพของคุณเป็นแบบนี้ได้อย่างไรและคุณจะขยายไฟล์การเขียนของคุณเองสำหรับสถานการณ์ที่ซับซ้อนได้อย่างไร
‫เพราะไม่มีอะไรทำให้รอยยิ้มบนใบหน้าของฉันเร็วขึ้นด้วย Docker
‫เมื่อฉันเห็นใครบางคนเรียกใช้คำสั่งหนึ่งบรรทัดเพื่อทำสิ่งที่เคยใช้สคริปต์หลายสคริปต์มาก่อน