我非常确信您的容器应具有尽可能少的权限。因此,我尝试在正在处理的容器中这样做。
也就是说,当非 root 用户时,如何处理容器中的监督进程?这是否唯一可能?
我的 Dockerfile
FROM php:apache
#ARG USER_ID
#ARG GROUP_ID
RUN apt-get update -y && \
apt-get install -yqq supervisor && \
rm -rf /var/lib/apt/lists/*;
# creating appropriate user
#RUN addgroup --gid $GROUP_ID dockeruser
#RUN adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID dockeruser
COPY ./run-on-start.sh /etc/init.d/run-on-start.sh
CMD ["/etc/init.d/run-on-start.sh"]
#USER dockeruser
#! /bin/sh
# running supervisor to process the queue
/usr/bin/supervisord
# running apache process
exec apache2-foreground
我注释了设置特定用户 ID 的部分,以便测试主管是否在 docker run 上启动。如果你有一个解决方案,我会很高兴。
答案1
只要supervisord及其服务可以以相同的所有者运行 - 在调整一些默认值后(例如将pid / sock / logs / temp文件放在非root用户可写入的某个目录中)你可以做到这一点并且它可以正常工作