docker 如果将 runAsGroup、runAsUser 从 1000 更改为 0,图像仅在 kubernetes 上运行

docker image only runs on kubernetes if runAsGroup, runAsUser are changed to 0 from 1000

我想先从我是 docker/kubernetes 的新手开始,如果术语有误,我深表歉意。

我们正在尝试将我们的 docker 图像传输到 kubernetes 上的 运行。在kubernetes上部署时,生成的yaml文件有这一行:

securityContext:
    runAsUser: 1000
    runAsGroup: 1000

按原样,该网站无法正常工作,但如果从 1000 更改为 0,则可以正常工作。

我们怀疑它与我们的 Dockerfile 中的 apache 有关,但一直无法弄清楚如何修复它。这是 Dockerfile(删除了 ENV 和 COPY 命令):

FROM cern/cc7-base
EXPOSE 8083

RUN yum update -y && yum install -y \
      ImageMagick \
      httpd \
      npm \
      php \
      python3-pip  

RUN echo "alias python=python3" >>~/.bashrc

RUN yum update -y && yum install -y \
      epel-release \
      root \
      python3-root


COPY requirements.txt /code/requirements.txt
RUN pip3 install -r /code/requirements.txt

RUN mkdir /db /run/secrets
RUN chown -R apache:apache /db /var/www /run/secrets

RUN ln -s /dev/stdout /etc/httpd/logs/access_log
RUN ln -s /dev/stderr /etc/httpd/logs/error_log

RUN chown apache:apache /etc/httpd/logs/error_log  
RUN chown apache:apache /etc/httpd/logs/access_log  
RUN chmod 666 /etc/httpd/logs/error_log
RUN chmod 666 /etc/httpd/logs/access_log

WORKDIR /webapp
COPY webapp/package.json /webapp/package.json
RUN npm install

COPY webapp /webapp
RUN npm run build
RUN cp -r /webapp/build /var/www/public
RUN cp -r /webapp/build /webapp/public

RUN mkdir /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons
RUN chmod 777 /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons

RUN chgrp -R 1000 /run && chmod -R g=u /run
RUN chgrp -R 1000 /etc/httpd/logs && chmod -R g=u /etc/httpd/logs

CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

我尝试过的一些事情是:How to run Apache as non-root user?, https://www.henryxieblogs.com/2020/01/dockerfile-example-of-linux-nonroot.html, https://takac.dev/docker-run-apache-as-non-root-user-based-on-the-official-image/

我不确定他们是否没有解决我的问题,或者我只是执行了错误的解决方案。

更改 error_log、access_log 在 httpd.conf 中的位置为我解决了这个问题。我还将 Dockerfile 中的所有 apache:apache 更改为 1000:1000

我想从这里更改日志的位置: