你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
空心菜 - 心向阳光,茁壮成长
赞同来自: Something
service nginx start && service php5-fpm start
service php5-fpm start && nginx -g "daemon off;"
service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log
要回复问题请先登录或注册
90后IT男
1 个回复
空心菜 - 心向阳光,茁壮成长
赞同来自: Something
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx和fpm为例,
正常情况下,我们配置启动服务只需要启动响应的service即可,例如:
但是,这样做,nginx和fpm均为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器,后台启动后,会立即自杀,因为他觉得他没事可做了.
解决方法:
1.最佳的解决方案是,将你要运行的程序以前台进程的形式运行,当然,如果你的容器需要同时启动多个进程,
那么也只需要,或者说只能将其中一个挂起到前台即可.
比如上面所说的web容器,我们只需要将启动指令修改为:
这样,fpm会在容器中以后台进程的方式运行,而nginx则挂起进程至前台运行,这样,就可以保持容器不会认为没事可做而自杀了.
2.对于有一些你可能不知道怎么前台运行的程序,提供一个投机方案,你只需要在你启动的命令之后,
添加类似于 tail top 这种可以前台运行的程序,这里特别推荐 tail ,然后持续输出你的log文件.
还是以上文的web容器为例,我们还可以写成: