PHP กับ nginx มักจะทำโดยใช้ php-fpm ซึ่งเป็นกระบวนการแยกต่างหาก
การรักษาความคิดหลักของนักเทียบท่าของหนึ่งกระบวนการ (ดูจุดสิ้นสุดคำตอบสำหรับรายละเอียดเพิ่มเติมในจุดนี้) ต่อคอนเทนเนอร์สิ่งนี้เหมาะสมที่จะมีกระบวนการ nginx และกระบวนการ php-fpm ในภาชนะแยก
เมื่อการสื่อสารระหว่าง nginx และ php-fpm เกิดขึ้นผ่าน fastcgi คอนเทนเนอร์ php-fpm สามารถอยู่บนโฮสต์ที่แยกจากกันและสิ่งนี้ช่วยให้สามารถใช้คลัสเตอร์ของคอนเทนเนอร์ php-fpm ที่อยู่ด้านหลัง nginx
หลังจากกำแพงความคิดเห็นที่นี่เป็นพื้นหลังเล็ก ๆ น้อย ๆ เอกสารประกอบนักเทียบท่ามีย่อหน้าเกี่ยวกับแนวคิดที่ว่าคอนเทนเนอร์ควรมีข้อกังวลเพียงข้อเดียว
แนวคิดหลักของคอนเทนเนอร์ linux ( lxc ) คือการเรียกใช้กระบวนการในเนมสเปซที่แยกได้ที่ระดับซีพียูและหน่วยความจำนักเทียบท่าเพิ่มที่ด้านบนของการแยกที่ระดับระบบไฟล์
ข้อดีคือการประนีประนอมของกระบวนการภายในเนมสเปซนี้จะไม่อนุญาตให้อ่านหน่วยความจำของกระบวนการอื่นและดังนั้นจึงควรป้องกันการบุกรุกอื่น ๆ ในโฮสต์
ในขณะที่พูดคุยเกี่ยวกับ nginx และ php-fpm พวกเขาทำงานเป็นคู่ แต่แต่ละคนมีความกังวลของตัวเอง nginx จะทำส่วน HTTP, เส้นทาง, การตรวจสอบส่วนหัว ฯลฯ และ php-fpm จะทำการตีความรหัสและส่งกลับส่วน html เพื่อ nginx . แม้ว่าจะเป็นเรื่องปกติที่ทั้งสองจะต้องให้บริการแอพพลิเคชั่นเดียวซึ่งไม่จำเป็น
ทั้งนี้ขึ้นอยู่กับบริบทที่อาจมีคอนเทนเนอร์รวมทั้งสแต็กทั้งหมดสำหรับแอปพลิเคชันได้ง่ายขึ้นบนเวิร์กสเตชันผู้พัฒนาสำหรับตัวอย่าง แต่เหมาะสำหรับการใช้ผลิตพยายามที่จะให้การปฏิสัมพันธ์น้อยลงในภาชนะที่มีกระบวนการแยกออกจากกันในภาชนะเดียวกันกับ supervisord นำหุ้นของปัญหาที่เกิดขึ้นในระยะเวลาของกระบวนการผีดิบและเข้าสู่ระบบการจัดการ (เรื่องกันตัวอย่างที่นี่มีวัตถุประสงค์เพื่อประกอบการอธิบายเท่านั้น)
ดังนั้นในที่สุดฉันก็จะพูดถึงหน้านักเทียบท่าด้วยความสำคัญ:
ในขณะที่“ หนึ่งกระบวนการต่อคอนเทนเนอร์” มักจะเป็นกฎง่ายๆ แต่ก็ไม่ใช่กฎที่ยากและรวดเร็ว ใช้วิจารณญาณที่ดีที่สุดของคุณเพื่อให้ภาชนะบรรจุที่สะอาดและแบบแยกส่วนที่เป็นไปได้
ไม่มี "กฎกระสุนปืนเงิน" ที่ใช้กับทุกสิ่งมันเป็นความสมดุลระหว่างความซับซ้อนภายในคอนเทนเนอร์และความซับซ้อนในการปรับแต่งตู้คอนเทนเนอร์เอง