Container ทำงานอย่างไร: Revision, Instance และการขยาย

ส่ง image มา ระบบรันให้ ขยายจำนวนตามคนใช้ และพักเองเมื่อไม่มีคนเรียก คุณไม่ต้องดูแลเซิร์ฟเวอร์

Image ของคุณDocker Hub · GHCR · Private1DeployRevisionr1r2r3Rollback ได้คลิกเดียวรุ่นที่ใช้งานผู้ใช้ / ระบบอื่นเรียกผ่าน HTTPS2ทางเข้าของบริการIngress · Invoker tokenInstance (ต่ำสุด–สูงสุด)Instance 1Instance 2เพิ่มเองเมื่อคนเยอะ34Database / Cacheใน VPC เดียวกันDATABASE_URLตั้งจำนวนต่ำสุดเป็น 0: ไม่มีคนเรียกราว 15 นาที Container จะพักและไม่คิดค่าเครื่อง request แรกหลังพักช้ากว่าปกติเล็กน้อย
ทุก Deploy เป็น Revision ใหม่ Revision ที่ใช้งานรันบน Instance ตั้งแต่จำนวนต่ำสุดถึงสูงสุดที่คุณตั้ง ระบบเพิ่มและลด Instance ตามจำนวน request

ทีละขั้นตามตัวเลขในภาพ

  1. build image แล้ว push ขึ้น registry จากนั้น Deploy ระบบเก็บเป็น Revision ทุกครั้ง ย้อนกลับได้ที่แท็บ Revisions
  2. ผู้ใช้เรียกแอปที่ https://ชื่อ.containers.ภูมิภาค.thailandhosting.com ทางเข้าตรวจว่าเปิดให้อินเทอร์เน็ตหรือเฉพาะใน VPC และต้องมี Invoker token หรือไม่
  3. request แต่ละตัวถูกส่งไปยัง Instance ที่พร้อมและมีงานค้างน้อยที่สุด เมื่อ Instance เริ่มแน่น (มี request รอคิว หรือ CPU เกินราว 70%) ระบบเพิ่ม Instance เองจนถึงจำนวนสูงสุด และลดลงเมื่อคนน้อยไปแล้วสักไม่กี่นาที บริการอื่นใน VPC ที่เรียกผ่าน ชื่อ.internal จะไปที่ Instance แรก
  4. แอปเรียก Database หรือ Cache ผ่านเครือข่ายส่วนตัว ถ้าเชื่อมไว้ ระบบใส่ตัวแปร DATABASE_URL ให้เอง

แอปของคุณควรทำ 4 อย่างนี้

  • ฟังที่ 0.0.0.0 บนพอร์ตจากตัวแปร $PORT ไม่ใช่ localhost
  • ตอบ health check path ด้วยสถานะต่ำกว่า 500 เมื่อพร้อมรับงาน
  • เก็บไฟล์ที่ผู้ใช้อัปโหลดไว้ใน Object Storage และข้อมูลไว้ใน Database เพราะ Instance ถูกเพิ่มและลดตามคนใช้
  • พิมพ์ log ออกทาง stdout และ stderr แล้วดูได้ในแท็บ Logs

ทดสอบ image ในเครื่องด้วย docker run -e PORT=8080 -p 8080:8080 image ก่อน ถ้าเปิด http://localhost:8080 ได้ ส่วนใหญ่ Deploy ก็ผ่าน

ยังแก้ไม่ได้? ให้ทีมงานช่วย

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