Ho visto un sacco di tutorial che sembrano fare la stessa cosa che sto cercando di fare, ma per qualche ragione i miei contenitori Docker escono. Fondamentalmente, sto installando un web server e alcuni demoni all'interno di un container Docker. Faccio le parti finali di questo tramite uno script bash chiamato run-all.sh
che corro attraverso CMD nel mio Dockerfile. run-all.sh
Somiglia a questo:
service supervisor start
service nginx start
E lo avvio all'interno del mio Dockerfile come segue:
CMD ["sh", "/root/credentialize_and_run.sh"]
Vedo che tutti i servizi si avviano correttamente quando eseguo le cose manualmente (ovvero accedendo all'immagine con -i -t / bin / bash) e tutto sembra funzionare correttamente quando eseguo l'immagine, ma esce una volta finisce di avviare i miei processi. Vorrei che i processi funzionassero indefinitamente e, per quanto ho capito, il contenitore deve continuare a funzionare perché ciò avvenga. Tuttavia, quando corro docker ps -a
, vedo:
➜ 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
Cosa dà? Perché sta uscendo? So che potrei semplicemente mettere un ciclo while alla fine del mio script bash per continuare, ma qual è il modo giusto per impedirgli di uscire?