CMD [ "supervisord" , "-c" , "/etc/supervisor.conf" ] 和 USER 非根中的错误



我需要在supervisor下运行docker容器始终非root用户。如果所有服务都需要升级状态,但仍会出现以下错误

追踪(最近一次通话(:文件"/usr/bin/susupervisorord";,第11行,inload_entry_point('supervisor==4.1.0','console_scripts','supervisors'(((文件"/usr/lib/python3/dist-packages/supervisor/supervisord.py";,358行,主go(选项(文件"/usr/lib/python3/dist-packages/supervisor/supervisord.py";,368行,正在进行中d.main((文件"/usr/lib/python3/dist-packages/supervisor/supervisord.py";,第70行,主self.options.make_logger((文件"//usr/lib/python3/dist-packages/supervisor/options.py";,第1466行,在make_logger中loggers.handle_file(文件"//usr/lib/python3/dist-packages/supervisor/loggers.py";,handle_file中的第417行handler=RotatingFileHandler(文件名,"a",最大字节数,备份(文件"//usr/lib/python3/dist-packages/supervisor/loggers.py";,initFileHandler中的第213行init(self、filename、mode(文件"//usr/lib/python3/dist-packages/supervisor/loggers.py";,第160行,在initself.stream=open(文件名,模式(中PermissionError:[Erno 13]权限被拒绝:'/susupervisord.log'

我的要求是必须以非root用户的身份登录容器,并且在docker运行后将在supervisor.conf中运行所有服务。我只需要非root用户——普通用户,并且没有任何类型的访问权限。

Dockerfile最后3行

RUN useradd-m nonroot&回声;nonroot:nonroot123"|chpasswd

用户非根

CMD["supervisorord"、"-c"、"/etc/supervisor.conf"]

此错误显示,以非特权用户身份运行的supervisord不允许直接写入/->/supervisord.log

根据supervisord文档,当前工作目录中的日志路径默认为supervisord.log,可通过以下方式进行配置:

配置文件[supervisorord]部分的日志文件参数,默认为$CWD/supervisorord.log。

这里有两个选项:

  • 使用WORKDIRDockerfile命令,将容器的默认工作目录更改为非root用户拥有完全权限的路径。您可能无论如何都应该这样做,因为您使用的是非特权用户
  • 编辑/etc/supervisor.conf,设置日志的可写路径

最新更新