我需要在 supervisor.conf 下始終以非 root 用戶身份運行 docker 容器,所有服務都需要啟動狀態,但仍然出現以下錯誤
回溯(最近一次呼叫):檔案“/usr/bin/supervisord”,第 11 行,在 load_entry_point('supervisor==4.1.0', 'console_scripts', 'supervisord')() 檔案“/usr/lib/ python3/dist-packages/supervisor/supervisord.py", line 358, in main go(options) File "/usr/lib/python3/dist-packages/supervisor/supervisord.py", line 368, in go 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”,第 417 行,在 handle_file handler = RotatingFileHandler(filename, 'a', maxbytes,備份)檔案“/usr/lib/python3/dist-packages/supervisor/loggers.py”,線路213,在初始化 的FileHandler。INIT(self, filename, mode) 檔案“/usr/lib/python3/dist-packages/supervisor/loggers.py”,第 160 行,在init self.stream = open(filename, mode) PermissionError: [Errno 13] Permission denied : '/supervisord.log'
我的要求是必須以非 root 用戶身份登錄容器,并且在 docker run 之后將運行 supervisor.conf 中的所有服務。我只需要普通用戶的非 root 用戶并且沒有任何型別的訪問權限。
Dockerfile 最后 3 行
運行 useradd -m nonroot && echo "nonroot:nonroot123" | 密碼
用戶非root
CMD ["supervisord", "-c", "/etc/supervisor.conf"]
uj5u.com熱心網友回復:
該錯誤表明您以非特權用戶身份運行的 supervisord 不允許直接寫入檔案/->/supervisord.log
根據supervisord 檔案,日志路徑默認supervisord.log在當前作業目錄中,并且可以通過以下方式配置:
組態檔[supervisord]部分的logfile引數,默認為$CWD/supervisord.log。
您在這里有兩個選擇:
- 使用
WORKDIRDockerfile 命令將容器的默認作業目錄更改為非 root 用戶具有完全權限的路徑。無論如何,您應該這樣做,因為您正在與非特權用戶一起運行它 - 編輯
/etc/supervisor.conf,設定日志的可寫路徑
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/392480.html
