ฉันได้เห็นแบบฝึกหัดมากมายที่ดูเหมือนจะทำแบบเดียวกันกับที่ฉันพยายามทำ แต่ด้วยเหตุผลบางอย่างที่นักเทียบท่าของฉันออกจากคอนเทนเนอร์ โดยพื้นฐานแล้วฉันกำลังตั้งค่าเว็บเซิร์ฟเวอร์และ daemons สองสามตัวภายในคอนเทนเนอร์ Docker ฉันทำส่วนสุดท้ายของสิ่งนี้ผ่านสคริปต์ทุบตีที่เรียกrun-all.sh
ว่าฉันทำงานผ่าน CMD ใน Dockerfile ของฉัน run-all.sh
มีลักษณะเช่นนี้:
service supervisor start
service nginx start
และฉันเริ่มมันภายใน Dockerfile ของฉันดังนี้
CMD ["sh", "/root/credentialize_and_run.sh"]
ฉันเห็นว่าบริการทั้งหมดเริ่มต้นขึ้นอย่างถูกต้องเมื่อฉันทำงานด้วยตนเอง (เช่นไปยังรูปภาพด้วย -i -t / bin / bash) และทุกอย่างดูเหมือนว่าจะทำงานอย่างถูกต้องเมื่อฉันเรียกใช้รูปภาพ แต่ออกทันที มันเสร็จสิ้นการเริ่มต้นกระบวนการของฉัน ฉันต้องการให้กระบวนการทำงานไปเรื่อย ๆ และเท่าที่ฉันเข้าใจคอนเทนเนอร์ต้องทำงานต่อไปเพื่อให้สิ่งนี้เกิดขึ้น อย่างไรก็ตามเมื่อฉันวิ่งdocker ps -a
ฉันเห็น:
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
สิ่งที่ช่วยให้? ทำไมถึงออก ฉันรู้ว่าฉันสามารถใส่วนหนึ่งในตอนท้ายของสคริปต์ทุบตีของฉันเพื่อให้ทัน แต่สิ่งที่เป็นวิธีที่เหมาะสมเพื่อให้ออกจาก?