docker容器启动后马上退出解决方案

最近在看docker如何让容器在启动时直接运行某些进程,后来发现Dockerfile可以在容器启动的时候指定容器运行命令。

CMD指定,但是每个Dockerfile只能有一条CMD指令,如果指定了多条CMD指定,只有最后一条会被执行。

于是就想了一个办法,在写了一个脚本,在脚本里面启动多个进程,在Dockerfile里运行这个脚本。

最后证明这个方法是可行的,在实验过程中遇到一个问题,容器启动后会马上停止。

经查阅资料:

Docker容器同时只能管理一个进程,如果这个进程退出那么容器也就退出了,但这不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须有一个前台执行的进程。

解决方法:

脚本中最后一个进程一定要用前台运行方式即在进程最后不加&(&表示后台运行),否则容器会退出。

ref: https://blog.csdn.net/do_it_/article/details/80014321

----------------------------------------------------------------分割线----------------------------------------------------------------------

当在docker中使用uwsgi时,如果在uwsgi.ini配置文件中指定了daemonize参数,容器的uwsgi应用的日志将会输出到指定的文件, 进程会在后台运行,而不是在前台运行,这样就造成通过docker run启动或者compose启动时容器立刻退出的情况

猜你喜欢

转载自blog.csdn.net/pushiqiang/article/details/81114946
今日推荐