python - Docker: How to make Supervisor exit when there's an error
问题描述
I have a Docker container running Supervisor with 2 processes:
- Celery
- Django
I want Supervisor to exit when one of these processes returns an error.
This is my configuration:
[supervisord]
nodaemon=true
loglevel=debug
logfile=/app/supervisord.log
pidfile=/var/run/supervisord.pid
childlogdir=/app
[program:django]
command=python manage.py runserver 0.0.0.0:8000
redirect_stderr=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
[program:celery]
command=celery -A myapp worker --beat --scheduler django --loglevel=debug
redirect_stderr=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
[eventlistener:processes]
command=bash -c "printf 'SUPERVISORD READY' && while read line; do kill -SIGQUIT $PPID; done < /dev/stdin"
events=PROCESS_STATE_STOPPED,PROCESS_STATE_EXITED,PROCESS_STATE_FATAL
When I have a fatal error that should normally make Docker exit, Supervisor tries to launch Django again and again.. while the goal is to exit.
What's missing here? I tried different other configurations but it's not working.
解决方案
推荐阅读
- java - Hazelcast Nearcache 服务器 - 客户端 Spring Boot
- c# - 使用 C# 在 SFTP 中提取 ZIP 文件
- python - 如何在文本输入 Kivy 中使用多语言?
- javascript - Send email when one subscription email is added on Google sheet
- ios - 仅在 iOS 14 中崩溃核心数据
- reactjs - 如何访问反应表组件列中的行索引
- html - 无法让图像和文本与导航栏下的 CSS/flexbox 对齐
- html - html 代码标签的标记属性是什么?
- powershell - PowerShell,提取具有所有者和用户的 SharePoint 网站列表,并制作 CSV
- javascript - 用于在字符串中的数字和运算符符号之间添加空格的 JavaScript 正则表达式