我在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秒。