首页 > 解决方案 > 重新加载 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 检测到容器已启动并再次运行而没有问题。

谢谢!

标签: dockersupervisord

解决方案


推荐阅读