中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-25 09:12:21 來源:腳本之家 閱讀:384 作者:KeKeFund 欄目:服務器

一, 簡介

Dockerfile 運行只支持一條命令,當在Docker里要運行多條命令,用supervisor來管理就比較合適了。

Supervisor是一個 Python 開發的 client/server 系統,可以管理和監控類 UNIX 操作系統上面的進程。它可以同時啟動,關閉多個進程,使用起來特別的方便。

組成部分

supervisor 主要由兩部分組成:

supervisord(server 部分):主要負責管理子進程,響應客戶端命令以及日志的輸出等;
supervisorctl(client 部分):命令行客戶端,用戶可以通過它與不同的 supervisord 進程聯系,獲取子進程的狀態等。

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

但是使用supervisor,Django運行的日志就不會在Docker里輸出了,默認的輸出如下:

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

這樣的配置在容器中是同時運行Django,celery。

三,解決方案

1,改進后的配置方案

[inet_http_server]
port=9001
username=abc
password=123456
 
[supervisord]
nodaemon=true
logfile=/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.log
loglevel=info
redirect_stderr=true
 
[program:celery_worker]
command=python manage.py celery worker -c 4 -l info
loglevel=info
redirect_stderr=true
 
[program:celery_beat]
command=python manage.py celery beat
loglevel=info
redirect_stderr=true

實測發現Django的日志輸出會寫到stderr.log文件中,所以在配置文件中將錯誤日志重定向到標準日志里;

redirect_stderr=true

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

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

2,查看日志

運行容器時,將9001端口映射出去,通過ip:9001訪問:

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

點擊 Tail -f 查看各個進程的日志。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖南省| 周至县| 凤城市| 夏河县| 古浪县| 怀柔区| 顺义区| 华亭县| 德兴市| 澜沧| 毕节市| 扎赉特旗| 麟游县| 新竹县| 宿迁市| 马山县| 英德市| 清镇市| 芦山县| 中卫市| 贡觉县| 紫阳县| 台中市| 额济纳旗| 长宁区| 溧水县| 普兰店市| 衡阳市| 石楼县| 新龙县| 光山县| 库伦旗| 聂拉木县| 闽侯县| 玛纳斯县| 徐闻县| 和林格尔县| 南溪县| 克东县| 揭东县| 新竹县|