ฉันมีความต้องการคล้ายกันในการเรียกใช้สแต็ค LAMP, Mongo DB และบริการของฉันเอง
นักเทียบท่าเป็นระบบเสมือนจริงบนระบบปฏิบัติการซึ่งเป็นเหตุผลว่าทำไมจึงแยกคอนเทนเนอร์ไว้รอบกระบวนการที่กำลังทำงานอยู่ดังนั้นจึงต้องใช้กระบวนการอย่างน้อยหนึ่งกระบวนการที่ทำงานใน FOREGROUND
ดังนั้นคุณจึงให้สคริปต์เริ่มต้นของคุณเองเป็นจุดเริ่มต้นดังนั้นสคริปต์เริ่มต้นของคุณจึงกลายเป็นสคริปต์รูปภาพ Docker เพิ่มเติมซึ่งคุณสามารถใช้บริการใด ๆ ก็ได้ตามจำนวนที่กำหนด เริ่มต้นบริการ FOREGROUND อย่างน้อยต่อปลาย
ดังนั้นไฟล์ภาพ Docker ของฉันมีสองบรรทัดด้านล่างในท้ายที่สุด:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
ในสคริปต์ของฉันฉันใช้งาน MySQL, MongoDB, Tomcat เป็นต้นในที่สุดฉันก็เรียกใช้ Apache ของฉันเป็นเธรดเบื้องหน้า
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
สิ่งนี้ทำให้ฉันสามารถเริ่มบริการทั้งหมดของฉันและทำให้ภาชนะมีชีวิตอยู่ด้วยบริการล่าสุดที่เริ่มต้นที่อยู่เบื้องหน้า
หวังว่ามันจะช่วย
อัปเดต : เนื่องจากฉันตอบคำถามนี้ครั้งล่าสุดสิ่งใหม่ ๆ เกิดขึ้นเช่นDocker composeซึ่งสามารถช่วยให้คุณเรียกใช้บริการแต่ละอย่างบนคอนเทนเนอร์ของตัวเอง แต่ผูกทั้งหมดเข้าด้วยกันเป็นการอ้างอิงระหว่างบริการเหล่านั้นลองรู้เพิ่มเติมเกี่ยวกับนักเขียนและ ใช้มันเป็นวิธีที่หรูหรามากขึ้นเว้นแต่ความต้องการของคุณไม่ตรงกับมัน