2

这是我的Dockerfile内容。当我在本地运行它时,它运行良好,但是当我尝试将它部署在它上面时,openshift container它会抛出permission denied错误

    FROM tomcat:8.0.36-jre8
    CMD groupadd -r myuser -g 501
    CMD useradd -d /home/myuser -u 501 -m -s /bin/bash -g myuser myuser
    CMD chown -R myuser:myuser /usr/local/tomcat
    ADD target/ui-1.0.war /usr/local/tomcat/webapps/
    ADD docker-tomcat-conf/server.xml /usr/local/tomcat/conf/
    ADD docker-tomcat-conf/web.xml /usr/local/tomcat/webapps/manager/WEB-INF
    EXPOSE 8080
    CMD chmod +x /usr/local/tomcat/bin/catalina.sh
    ENTRYPOINT ["catalina.sh", "run"]

和错误

    Parse error in application web.xml file at file:/usr/local/tomcat/conf/web.xml
java.io.FileNotFoundException: /usr/local/tomcat/conf/web.xml (Permission denied)
    at java.io.FileInputStream.open0(Native Method)
4

3 回答 3

0

我们必须添加权限才能以 root 启动 tomcat。

oc adm policy add-scc-to-user anyuid -z default

它应该工作。

于 2021-01-25T05:40:26.973 回答
0

openshift 站点上可能有一些政策不允许您以特权模式运行容器(例如,使用 root 帐户运行进程)

您必须找出在哪个用户下启动 tomcat(请参阅 openshift 策略,询问您的集群管理员)并相应地调整所有必要的文件和文件夹权限,在 Dockerfile 中使用 chown 和/或 chmod。

于 2020-02-17T13:10:44.730 回答
0
FROM tomcat:8.0.36-jre8
RUN groupadd -r myuser -g 501
RUN useradd -d /home/myuser -u 501 -m -s /bin/bash -g myuser myuser
RUN chown -R myuser:myuser /usr/local/tomcat
ADD target/ui-1.0.war /usr/local/tomcat/webapps/
ADD docker-tomcat-conf/server.xml /usr/local/tomcat/conf/
ADD docker-tomcat-conf/web.xml /usr/local/tomcat/conf/
EXPOSE 8080
RUN chmod +x /usr/local/tomcat/bin/catalina.sh
ENTRYPOINT ["catalina.sh", "run"]

首先你需要用语句替换CMD命令。RUN

另外,你是不是错过了一个/at

docker-tomcat-conf/web.xml /usr/local/tomcat/webapps/manager/WEB-INF

我想这应该是

docker-tomcat-conf/web.xml /usr/local/tomcat/webapps/manager/WEB-INF/

或者

docker-tomcat-conf/web.xml /usr/local/tomcat/webapps/manager/WEB-INF/web.xml

/usr/local/tomcat/webapps/manager/WEB-INF/应该/usr/local/tomcat/conf/吗?

于 2020-02-17T12:45:13.180 回答