Saya telah melihat banyak tutorial yang tampaknya melakukan hal yang sama yang saya coba lakukan, tetapi untuk beberapa alasan wadah Docker saya keluar. Pada dasarnya, saya membuat server web dan beberapa daemon di dalam wadah Docker. Saya melakukan bagian terakhir dari ini melalui skrip bash yang disebut run-all.shbahwa saya menjalankan melalui CMD di Dockerfile saya. run-all.shterlihat seperti ini:
service supervisor start
service nginx start
Dan saya memulainya di dalam Dockerfile saya sebagai berikut:
CMD ["sh", "/root/credentialize_and_run.sh"]
Saya dapat melihat bahwa semua layanan memulai dengan benar ketika saya menjalankan sesuatu secara manual (yaitu melanjutkan ke gambar dengan -i -t / bin / bash), dan semuanya terlihat berjalan dengan benar ketika saya menjalankan gambar, tetapi keluar sekali selesai memulai proses saya. Saya ingin proses berjalan tanpa batas, dan sejauh yang saya mengerti, wadah harus terus berjalan agar ini terjadi. Namun demikian, ketika saya berlari docker ps -a, saya melihat:
➜ 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
Apa yang menyebabkannya? Mengapa keluar? Saya tahu saya bisa meletakkan loop sementara di akhir skrip bash saya untuk mempertahankannya, tetapi apa cara yang benar untuk mencegahnya keluar?