详解码头工人容器运行多条命令(主管)

  


  

  

Dockerfile运行只支持一条命令,当在码头工人里要运行多条命令,用主管来管理就比较合适了。
  

  

主管是一个Python开发的客户机/服务器系统,可以管理和监控类UNIX操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。

  

<强>组成部分
  

  

主管主要由两部分组成:

  

supervisord(服务器部分):主要负责管理子进程,响应客户端命令以及日志的输出等;
  supervisorctl(客户端部分):命令行客户端,用户可以通过它与不同的supervisord进程联系,获取子进程的状态等。
  

  

<强>
  

  

但是使用主管,Django运行的日志就不会在码头工人里输出了,默认的输出如下:
  

  
  

2018-03-28 06:48:20,292暴击主管作为根用户运行(没有用户配置文件)
  2018-03-28 06:48:20,308信息supervisord始于pid 1
  2018-03-28 06:48:21,310信息了:“celery_beat”与pid 7
  2018-03-28 06:48:21,312信息了:“celery_worker”与pid 8
  2018-03-28 06:48:21,313信息了:“django”与pid 9
  2018-03-28 06:48:22,315信息成功:celery_beat进入运行状态,过程比熬夜;比1秒(startsecs)
  2018-03-28 06:48:22,315信息成功:celery_worker进入运行状态,过程比熬夜;比1秒(startsecs)
  2018-03-28 06:48:22,315信息成功:django进入运行状态,过程比熬夜;比1秒(startsecs)
  

     

上面的码头工人中主管配置如下:

        (supervisord)   nodaemon=true      (项目:django)   python命令=管理。py runserver 0.0.0.0:8080      (项目:celery_worker)   python命令=管理。py芹菜工人4 - c - l信息      (项目:celery_beat)   python命令=管理。py芹菜击败      

这样的配置在容器中是同时运行Django,芹菜。

  


  

  

<强> 1,改进后的配置方案

        (inet_http_server)   端口=9001   用户名=美国广播公司   密码=123456      (supervisord)   nodaemon=true   日志文件=/var/log/主管/supervisord。日志;(主日志文件,默认/supervisord.log)慢性消耗性疾病   pidfile=/var/跑步/supervisord。pid;(supervisord pidfile;默认supervisord.pid)   childlogdir=/var/log/主管;('汽车'孩子日志dir,默认临时美元)      (项目:django)   python命令=管理。py runserver 0.0.0.0:8080   # stdout_logfile=/var/log/supervisord/django_stdout.log   loglevel=信息   redirect_stderr=true      (项目:celery_worker)   python命令=管理。py芹菜工人4 - c - l信息   loglevel=信息   redirect_stderr=true      (项目:celery_beat)   python命令=管理。py芹菜打   loglevel=信息   redirect_stderr=true      

实测发现Django的日志输出会写到stderr.log文件中,所以在配置文件中将错误日志重定向到标准日志里;

        redirect_stderr=true      

容器中的生成的日志文件如下:
  

        root@a16bc77e96bc:/var/log/主管# ls   celery_beat-stderr——-supervisor-rSPQ7E。日志django-stderr——-supervisor-9LS_KA.log   celery_beat-stdout——-supervisor-t5Q4UI。日志django-stdout——-supervisor-cTSBmq.log   celery_worker-stderr——-supervisor-TRFzc7。日志supervisord.log   celery_worker-stdout——-supervisor-xNgeBU.log      

<强> 2,查看日志
  

  

运行容器时,将9001端口映射出去,通过ip: 9001年访问:

  

详解码头工人容器运行多条命令(主管)

  

点击Tail - f查看各个进程的日志。
  

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

详解码头工人容器运行多条命令(主管)