我需要在Openshift起源上使用tomcat:最新图像。我知道这个图像以root用户身份运行,但是我希望它能够通过向开发者用户提供集群管理员权限来实现:
$ oadm policy add-cluster-role-to-user cluster-admin developer
不幸的是我仍然得到了:
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Permissions incorrect, read permission is not allowed on the file.
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Permissions incorrect, read permission is not allowed on the file.
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina start
SEVERE: Cannot start server. Server instance is not configured.
有什么方法可以解决这个问题吗? 感谢
答案 0 :(得分:1)
OpenShift中有用户(例如示例中的developer
)和用于运行容器的用户。他们是不同的。
您使用的命令适用于第一类用户。您需要的是配置安全上下文约束(SCC)以允许developer
运行具有任何UID的容器(这里我说的是主机操作系统中存在的系统用户)。
您可以在文档中找到更多information about SCC and how to manage it。
答案 1 :(得分:0)
通过使用Docker构建策略,您可以使用官方的tomcat映像而无需提升特权。您必须制作root
组拥有的所有tomcat文件,如official docs,支持任意用户ID 部分中所述。
我有以下带有tomcat官方高山映像的docker文件,其中删除了所有默认应用程序,递归更改了tomcat目录的所有权,然后将我的工件复制到webapps中
FROM tomcat:jre8-alpine
RUN rm -rf /usr/local/tomcat/webapps/* && \
chgrp -R 0 /usr/local/tomcat/ && \
chmod -R g=u /usr/local/tomcat/
ADD ROOT.war /usr/local/tomcat/webapps/
只需确保您的应用程序未将日志写入/var/log
或默认tomcat文件夹之外的地方,或以类似方式调整这些文件夹的所有权。