ก่อนมีปัญหาในของคุณDockerfile:
RUN service mysql restart && /tmp/setup.sh
อิมเมจของ Docker จะไม่บันทึกกระบวนการที่กำลังทำงานอยู่ ดังนั้นRUNคำสั่งของคุณจะดำเนินการเฉพาะในช่วงdocker buildเฟสและหยุดหลังจากการสร้างเสร็จสมบูรณ์ คุณต้องระบุคำสั่งแทนเมื่อคอนเทนเนอร์เริ่มต้นโดยใช้คำสั่งCMDหรือENTRYPOINTคำสั่งด้านล่าง:
CMD mysql start
ประการที่สองคอนเทนเนอร์นักเทียบท่าต้องการกระบวนการ (คำสั่งสุดท้าย) เพื่อให้ทำงานต่อไปมิฉะนั้นคอนเทนเนอร์จะออก / หยุด ดังนั้นservice mysql startคำสั่งปกติไม่สามารถใช้โดยตรงใน Dockerfile
สารละลาย
มีวิธีทั่วไปสามวิธีในการทำให้กระบวนการทำงานต่อไป:
สิ่งนี้มักเป็นที่ต้องการเมื่อคุณมีบริการเดียวที่กำลังทำงานเพราะทำให้สามารถเข้าถึงบันทึกเอาต์พุตที่นักเทียบท่าได้
สิ่งนี้ใช้ได้เฉพาะในกรณีที่มีสคริปต์เช่นmysqld_safeนั้น
สิ่งนี้จะดีที่สุดหากคำสั่งต้องดำเนินการตามลำดับขั้นตอน/start.shควรดำเนินการต่อ
บันทึก
สำหรับมือใหม่ที่supervisordไม่แนะนำให้ใช้ สุจริตมันเกินความจริง มันจะดีกว่ามากที่จะใช้บริการเดียว / คำสั่งเดียวสำหรับภาชนะ
BTW: โปรดตรวจสอบhttps://registry.hub.docker.comสำหรับรูปภาพ mysql docker ที่มีอยู่สำหรับการอ้างอิง