国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

詳解Docker容器運(yùn)行多條命令(supervisor)

2024-09-01 13:54:27
字體:
供稿:網(wǎng)友

一, 簡(jiǎn)介

Dockerfile 運(yùn)行只支持一條命令,當(dāng)在Docker里要運(yùn)行多條命令,用supervisor來管理就比較合適了。

Supervisor是一個(gè) Python 開發(fā)的 client/server 系統(tǒng),可以管理和監(jiān)控類 UNIX 操作系統(tǒng)上面的進(jìn)程。它可以同時(shí)啟動(dòng),關(guān)閉多個(gè)進(jìn)程,使用起來特別的方便。

組成部分

supervisor 主要由兩部分組成:

supervisord(server 部分):主要負(fù)責(zé)管理子進(jìn)程,響應(yīng)客戶端命令以及日志的輸出等;
supervisorctl(client 部分):命令行客戶端,用戶可以通過它與不同的 supervisord 進(jìn)程聯(lián)系,獲取子進(jìn)程的狀態(tài)等。

二,存在的問題——日志不輸出

但是使用supervisor,Django運(yùn)行的日志就不會(huì)在Docker里輸出了,默認(rèn)的輸出如下:

2018-03-28 06:48:20,292 CRIT Supervisor running as root (no user in config file)
2018-03-28 06:48:20,308 INFO supervisord started with pid 1
2018-03-28 06:48:21,310 INFO spawned: 'celery_beat' with pid 7
2018-03-28 06:48:21,312 INFO spawned: 'celery_worker' with pid 8
2018-03-28 06:48:21,313 INFO spawned: 'django' with pid 9
2018-03-28 06:48:22,315 INFO success: celery_beat entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-03-28 06:48:22,315 INFO success: celery_worker entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-03-28 06:48:22,315 INFO success: django entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

上面的Docker中supervisor配置如下:

[supervisord]nodaemon=true [program:django]command=python manage.py runserver 0.0.0.0:8080 [program:celery_worker]command=python manage.py celery worker -c 4 -l info [program:celery_beat]command=python manage.py celery beat

這樣的配置在容器中是同時(shí)運(yùn)行Django,celery。

三,解決方案

1,改進(jìn)后的配置方案

[inet_http_server]port=9001username=abcpassword=123456 [supervisord]nodaemon=truelogfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)childlogdir=/var/log/supervisor      ; ('AUTO' child log dir, default $TEMP) [program:django]command=python manage.py runserver 0.0.0.0:8080#stdout_logfile = /var/log/supervisord/django_stdout.logloglevel=inforedirect_stderr=true [program:celery_worker]command=python manage.py celery worker -c 4 -l infologlevel=inforedirect_stderr=true [program:celery_beat]command=python manage.py celery beatloglevel=inforedirect_stderr=true

實(shí)測(cè)發(fā)現(xiàn)Django的日志輸出會(huì)寫到stderr.log文件中,所以在配置文件中將錯(cuò)誤日志重定向到標(biāo)準(zhǔn)日志里;

redirect_stderr=true

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

root@a16bc77e96bc:/var/log/supervisor# lscelery_beat-stderr---supervisor-rSPQ7E.log  django-stderr---supervisor-9LS_KA.logcelery_beat-stdout---supervisor-t5Q4UI.log  django-stdout---supervisor-cTSBmq.logcelery_worker-stderr---supervisor-TRFzc7.log supervisord.logcelery_worker-stdout---supervisor-xNgeBU.log

2,查看日志

運(yùn)行容器時(shí),將9001端口映射出去,通過ip:9001訪問:

Docker,supervisor,多條命令

點(diǎn)擊 Tail -f 查看各個(gè)進(jìn)程的日志。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南靖县| 丹棱县| 司法| 樟树市| 云南省| 宣城市| 景宁| 牡丹江市| 大方县| 乐东| 渝中区| 炎陵县| 玉龙| 酉阳| 蓬莱市| 磐安县| 延寿县| 河津市| 江门市| 达拉特旗| 舟曲县| 石台县| 九寨沟县| 承德市| 怀集县| 锦州市| 兰考县| 保山市| 伊宁县| 神木县| 公安县| 恩平市| 延寿县| 泽普县| 博湖县| 大洼县| 台安县| 舟山市| 龙井市| 南昌市| 平谷区|