Ber*_*ute 7 supervisord docker
我正试图集中使用supervisord及其进程的输出supervisor-stdout
.但是有了这个supervisord配置:
#supervisord.conf
[supervisord]
nodaemon = true
[program:nginx]
command = /usr/sbin/nginx
stdout_events_enabled = true
stderr_events_enabled = true
[eventlistener:stdout]
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
Run Code Online (Sandbox Code Playgroud)
(请注意,supervisor-stoud的配置部分与supervisor-stoud网站上的示例完全相同).
...和这个Dockerfile:
#Dockerfile
FROM python:3-onbuild
RUN apt-get update && apt-get install -y nginx supervisor
# Setup supervisord
RUN pip install supervisor-stdout
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY nginx.conf /etc/nginx/nginx.conf
# restart nginx to load the config
RUN service nginx stop
# Start processes
CMD supervisord -c /etc/supervisor/conf.d/supervisord.conf -n
Run Code Online (Sandbox Code Playgroud)
我可以很好地构建图像,但是从它运行一个容器给了我:
错误:supervisor_stdout:无法在[eventlistener:stdout]中解析event_handler
编辑
运行的输出:
supervisord -c /etc/supervisor/conf.d/supervisord.conf -n
是:
Error: supervisor_stdout:event_handler cannot be resolved within [eventlistener:stdout]
For help, use /usr/bin/supervisord -h
Run Code Online (Sandbox Code Playgroud)
我有同样的问题,简而言之,你需要安装提供该supervisor_stdout:event_handler
处理程序的Python包.您应该能够通过发出以下命令:
apt-get install -y python-pip
pip install supervisor-stdout
Run Code Online (Sandbox Code Playgroud)
如果您已经pip
在该容器上安装了一个简单的:
pip install supervisor-stdout
应该足够了,可以在这里找到有关该特定包的更多信息:
https://pypi.python.org/pypi/supervisor-stdout
AFAIK,没有提供supervisor-stdout的debian软件包,所以安装它的最简单方法是通过pip.
希望它能帮助像我一样来到这里的人.
[编辑]正如Vin-G建议的那样,如果你在完成这些步骤后仍然遇到问题,那么supervisord可能会陷入旧版本.尝试更新它.
干杯!
我遇到了完全相同的问题,并通过使用Ubuntu 14.04
作为基础图像Debian Jessie
(我使用的python:2.7
是基于 Jessie 的图像)来解决它。
您可以参考这个完整的工作实现:https://github.com/rehabstudio/docker-gunicorn-nginx。
编辑:正如 @Vin-G 在他的评论中指出的,这可能是因为 Debian Jessie 附带的主管版本太旧了。您可以尝试从 apt 中删除它并使用 pip 安装它。
归档时间: |
|
查看次数: |
3992 次 |
最近记录: |