微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 openshift

如何解决在 openshift

我正在将一些 Coldfusion 应用程序从 linux redhat 服务器迁移到 openshift。一些应用程序的设置方式要求它们需要符号链接认情况下 Tomcat 会阻止这些符号链接。所以我需要更新 server.xml 配置文件添加属性以允许符号链接。但是,每次执行此操作时,coldfusion 启动时都会发生错误,导致 .car 文件无法加载 cf 管理员设置。

我所做的是获取现有的 server.xml 文件,将 allowLinking="true" 属性添加到 /app 目录的资源标记中,并将文件加载到配置映射中,然后将该配置映射添加到我的部署中yaml

在 volumeMounts 下:

            - mountPath: /opt/coldfusion/cfusion/runtime/conf/server.xml
              name: volume-my3uz
              subPath: server.xml

在体积下:

        - configMap:
            defaultMode: 420
            name: tomcat-config-q
          name: volume-my3uz

这有效(在某种程度上)... server.xml 文件被替换,符号链接有效,但带有所有管理员设置的 .car 文件没有加载。查看 openshift 中的启动日志,我看到:

Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Updating webroot to /app
Configuring virtual directories
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml

然后再往下是一个冷聚变错误—— 未找到文件:/ColdFusionDockerStartupScripts/importCAR.cfm

我注意到的一件事是,即使我不尝试包含修改后的 server.xml 并坚持使用认值,该文件的时间戳也是 pod 启动时的时间戳。我的工作理论是,初始 server.xml 文件中有一些东西定义了 ColdFusionDockerStartupScripts 目录,一旦它完成,Coldfusion 就会删除该条目(因此我修改文件一个已经被 Coldfusion 修改过的文件,并且没有那个条目) .但我现在真的只是猜测,不知道我做错了什么。

解决方法

感谢 Adob​​e 论坛上的帖子,我找到了答案: https://community.adobe.com/t5/coldfusion/coldfusion-2016-update-17-docker-facing-simlink-issue/m-p/12218493#M189428

从本质上讲,我是正确的,coldfusion 在启动时更新 server.xml 文件,并且尝试让 openshift 替换该文件似乎会干扰它。这一切都发生在位于以下位置的 Coldfusion 启动脚本中 - /opt/startup/start-coldfusion.sh。因此,解决方案是更新该脚本以将 allowLinking 属性添加到 xml 文件中,而不是直接更新它。

我在脚本中添加了以下行:

xmlstarlet ed -P -S -L -i /Server/Service/Engine/Host/Context/Resources -t attr -n "allowLinking" -v "true" /opt/coldfusion/cfusion/runtime/conf/server.xml

然后将更新后的文件放入配置映射中,并让 openshift 替换该文件而不是 server.xml,这会起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。