如果 runAsGroup、runAsUser 从 1000 更改为 0,则 docker 镜像仅在 kubernetes 上运行
首先,我是 docker/kubernetes 的新手,所以如果我弄错了术语,我深表歉意。
我们正在尝试让我们的 docker 镜像在 kubernetes 上运行。当部署在 kubernetes 上时,生成的 yaml 文件有这样一行:
securityContext:
runAsUser: 1000
runAsGroup: 1000
As is, the website does not work, but if change to 0 from 1000, it Works。
我们怀疑它与 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"]
我尝试过的一些操作是: 如何以非 root 用户身份运行 Apache?, 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/
我不确定他们是否没有解决我的问题,或者如果我只是错误地执行了解决方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更改 httpd.conf 中 error_log、access_log 的位置为我解决了这个问题。我还将 Dockerfile 中的所有
apache:apache
更改为1000:1000
。我想从这里更改日志的位置:
https://stackoverflow.com/a/525724/9062782
Changing the location of error_log, access_log in httpd.conf solved this for me. I also changed all the
apache:apache
to1000:1000
in the Dockerfile.I got the idea to change the location of the logs from here:
https://stackoverflow.com/a/525724/9062782