tomcat docker 通过 Kubernetes 部署时 chmod 无法正常工作

tomcat docker chmod not working correctly when deploying via Kubernetes

我正在尝试通过 Kubernetes 部署一个 docker 容器。在我的 DockerFile 中,我指定了这个 (neuro:

FROM docker/psh-base-centos-tomcat:7.7.1908.1
RUN groupadd -r mygroup && useradd --no-log-init -r -g mygroup mygroup
USER mygroup:mygroup
WORKDIR /home/mygroup
RUN chmod 755 -R /tomcat
RUN chown -R mygroup:mygroup /tomcat
COPY ./target/rest-*.war /tomcat/webapps/rest.war
ENTRYPOINT ["sh", "/tomcat/bin/startup.sh"]

但是,当我通过 AKS 部署此服务时,日志显示如下:

sh: /tomcat/bin/catalina.sh: Permission denied

我通过将 RUN chmod 755 -R /tomcat/bin/catalina.sh 添加到 DockerFile 来手动启用 catalina.sh 文件的权限,然后我重新部署它,现在我得到了这个:

touch: cannot touch '/tomcat/logs/catalina.out': Permission denied
/tomcat/bin/catalina.sh: line 434: /tomcat/logs/catalina.out: Permission denied

似乎 RUN chmod 755 -R /tomcat 没有正常工作,我不知道为什么。我在这里获取 /tomcat 文件夹的权限有什么不对吗?

这是您的 Dockerfile 中的 Linux 用户管理问题,Dockerfile 在构建过程中逐行解释(逐层)在您的情况下,您已将“neurostar”设置为当前用户第三行,你想更改默认的用户目录访问权限。

这应该适合你:

FROM docker/psh-base-centos-tomcat:7.7.1908.1 
USER root 
RUN groupadd -r mygroup && useradd --no-log-init -r -g mygroup mygroup 
RUN chmod 755 -R /tomcat 
RUN chown -R mygroup:mygroup /tomcat 
USER mygroup 
COPY ./target/rest-*.war /tomcat/webapps/rest.war 
ENTRYPOINT ["sh", "/tomcat/bin/startup.sh"]