docker - 重新加载 Docker 容器运行进程时,Supervisor 失败
问题描述
我有一个在 Docker 容器中运行的 Redis 队列进程,所以我安装了 Supervisor 以确保该队列不会停止。无论如何,由于 CI/CD 管道,这个容器最终会被销毁并重建。
有时我需要在重新加载此容器后手动重新启动 Supervisor。为什么会这样?
这是配置文件:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=docker exec app php artisan queue:work redis --tries=1
autostart=true
autorestart=true
user=www
numprocs=2
redirect_stderr=true
stdout_logfile=/home/services/app/storage/logs/supervisor.log
发生这种情况时,Supervisor 服务状态显示如下:
Nov 01 19:20:06 supervisord[16548]: 2021-11-01 19:20:06,136 INFO spawned: 'laravel-worker_01' with pid 16392
Nov 01 19:20:06 supervisord[16548]: 2021-11-01 19:20:06,318 INFO exited: laravel-worker_01 (exit status 1; not expected)
Nov 01 19:20:07 supervisord[16548]: 2021-11-01 19:20:07,319 INFO gave up: laravel-worker_01 entered FATAL state, too many start retries too quickly
并且日志文件显示:
OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: process_linux.go:103: executing setns process caused: exit status 1: unknown
OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: process_linux.go:103: executing setns process caused: exit status 1: unknown
Error response from daemon: Container 8ce00d8fe3091217562b0f9c2297d384a1f40ee9a21fb4c1ade18c9feb6e8d8b is not running
Error response from daemon: Container 8ce00d8fe3091217562b0f9c2297d384a1f40ee9a21fb4c1ade18c9feb6e8d8b is not running
Error: No such container: app
Error: No such container: app
这最终会发生。有时,Supervisor 检测到容器已启动并再次运行而没有问题。
谢谢!
解决方案
推荐阅读
- c# - 使用 NetSuitePortTypeClient 初始化 NetSuite 客户端
- django - 当我使用 Django 保存数据时,在 PostgreSQL 中使用触发器(AFTER INSERT)保存的数据被删除
- c# - 如何在 C# 中将声明作为标志(布尔)添加到 SystemUser
- azure - Azure 服务总线 SendAsync 不在控制台应用程序中发送消息
- microsoft-cognitive - Microsoft 表单识别器 api 返回 3003 OCR 提取错误
- java - 每次选择新项目时打印选定的组合框项目
- javascript - 在 React 中清理嵌套的 Select
- yocto - 我可以让 MSYS2 适合 yocto 编译吗?
- generics - Rust 中的泛型函数
- excel - 如何验证 2 个特定值存在于单独工作簿的同一行中