He visto un montón de tutoriales que parecen hacer lo mismo que estoy tratando de hacer, pero por alguna razón mis contenedores Docker salen. Básicamente, estoy configurando un servidor web y algunos demonios dentro de un contenedor Docker. Hago las partes finales de esto a través de un script de bash llamado run-all.shque ejecuto a través de CMD en mi Dockerfile. run-all.shSe ve como esto:
service supervisor start
service nginx start
Y lo inicio dentro de mi Dockerfile de la siguiente manera:
CMD ["sh", "/root/credentialize_and_run.sh"]
Puedo ver que todos los servicios se inician correctamente cuando ejecuto las cosas manualmente (es decir, acceder a la imagen con -i -t / bin / bash), y todo parece funcionar correctamente cuando ejecuto la imagen, pero se cierra una vez termina de iniciar mis procesos. Me gustaría que los procesos se ejecuten indefinidamente, y hasta donde yo entiendo, el contenedor tiene que seguir ejecutándose para que esto suceda. Sin embargo, cuando corro docker ps -a, veo:
➜ 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
¿Lo que da? ¿Por qué está saliendo? Sé que podría poner un bucle while al final de mi script bash para mantenerlo, pero ¿cuál es la forma correcta de evitar que salga?