Chuyển đến nội dung chính
Quay lại danh sách bài viết

Docker Compose คุมลำดับเริ่มบริการด้วย Healthcheck

Compose ใช้ dependency condition เพื่อรอให้บริการต้นทางผ่าน healthcheck ก่อนเริ่มบริการที่พึ่งพา อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

Docker Compose คุมลำดับเริ่มบริการด้วย Healthcheck

Compose ใช้ dependency condition เพื่อรอให้บริการต้นทางผ่าน healthcheck ก่อนเริ่มบริการที่พึ่งพา เหมาะกับเว็บที่ต้องรอฐานข้อมูลหรือคิวข้อความก่อนเริ่มทำงาน บทความนี้สรุปแนวคิดจากเอกสารทางการของ Docker และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

Docker แยกแอปและ dependency ไว้ในคอนเทนเนอร์ การใช้งานจริงต้องดูทั้งอิมเมจ สิทธิ์ เครือข่าย และข้อมูลที่ต้องอยู่ต่อหลังคอนเทนเนอร์ถูกแทนที่

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: Compose ใช้ dependency condition เพื่อรอให้บริการต้นทางผ่าน healthcheck ก่อนเริ่มบริการที่พึ่งพา จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

การระบุ depends_on ร่วมกับ service_healthy แยกสถานะเริ่มคอนเทนเนอร์ออกจากสถานะที่แอปพร้อมใช้งาน

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับเว็บที่ต้องรอฐานข้อมูลหรือคิวข้อความก่อนเริ่มทำงาน

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. ตรวจอิมเมจและ Compose configuration ที่จะใช้จริง
  2. ทดสอบการสร้างคอนเทนเนอร์ใหม่ รวมถึง mount, network และ healthcheck
  3. บันทึกวิธีย้อนเวอร์ชันอิมเมจและกู้ข้อมูลจาก Volume

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

healthcheck ต้องตรวจความพร้อมจริง ไม่ใช่แค่มี process และแอปควร retry เองเมื่อ dependency หลุดภายหลัง

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

Compose ใช้ dependency condition เพื่อรอให้บริการต้นทางผ่าน healthcheck ก่อนเริ่มบริการที่พึ่งพา เหมาะกับเว็บที่ต้องรอฐานข้อมูลหรือคิวข้อความก่อนเริ่มทำงาน ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ Docker

Chia sẻ bài viết:
Xem thêm bài viết