我在 Docker 容器内部使用它supervisord
来管理正在运行的进程,并且还想用它来触发某些命令 - 运行它们一次并期望它们退出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-enter
来supervisorctl start central-seed-posts
触发它,但我还想处理成功退出,而不是主管告诉我ERROR (abnormal termination)
这和主管事件有关系吗?
答案1
您遇到的问题似乎与您使用的以下选项有关:
startsecs = 3
如果你读过supervisord的手册,你会看到startsecs设置了进程在启动后必须存活多长时间,Supervisord才会认为启动成功。你的进程可能在3秒之前就退出了,这向supervisord暗示启动不成功。
尝试将其降低到 0,除非您有真正的理由将其保持为 3 秒。