处理预期的supervisord退出代码

我在Docker容器内部使用了supervisord来pipe理我的正在运行的进程,并且还想用它来触发某些命令 – 运行它们一次,并期望它们以0退出。

这里有一个例子:

 [program:central-seed-posts] command = /usr/bin/php /var/www/app/artisan post autostart = false autorestart = false startsecs = 3 startretries = 0 exitcodes = 0 stderr_logfile=/tmp/central/posts-stderr-supervisor.log stdout_logfile=/tmp/central/posts-stdout-supervisor.log 

我用nsenter的docker docker-enter supervisorctl start central-seed-posts来触发它,但是我也想处理一个成功的退出,而不是主pipe告诉我ERROR (abnormal termination)

这与监督事件有关吗?

您遇到的问题似乎与您使用以下选项:

 startsecs = 3 

如果您阅读了supervisord的手册,您可以看到startsecs设置了Supervisord启动后进程维持多久的时间,以考虑启动成功。 你的过程可能在3秒之前退出,这表明监督启动不成功。

尝试降低到0,除非你有一个真正的理由保持3秒。