在非 root 容器中运行 Supervisord

在非 root 容器中运行 Supervisord

我非常确信您的容器应具有尽可能少的权限。因此,我尝试在正在处理的容器中这样做。

也就是说,当非 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用户可写入的某个目录中)你可以做到这一点并且它可以正常工作

相关内容