gpt4 book ai didi

tomcat - OpenShift 迁移 - Conf 文件中的 ENV 变量没有像以前那样被替换

转载 作者:行者123 更新时间:2023-11-28 22:25:38 25 4
gpt4 key购买 nike

我正在将 Web 应用程序从 OpenShift v2 迁移到 OpenShift Pro。这是一个普通的 Java Tomcat 应用程序。

我在 OpenShift v2 上的 webapp 在 server.xml 中指定了一个额外的 docBase,如下所示:

        <Context docBase="${OPENSHIFT_DATA_DIR}/documents" path="/documents" />

在部署期间,环境变量 OPENSHIFT_DATA_DIR 被替换为它的值:/opt/app-root/data

正如您所期望的那样。

我在 OpenShift Pro 中完成了相同的设置(尽管完全不同),但部署失败。经过调查,我在日志中看到了这一点:

Caused by: java.lang.IllegalArgumentException: The main resource set specified [/deployments/${OPENSHIFT_DATA_DIR}/documents] is not valid

为了克服这个问题,我只是像这样在 server.xml 中硬编码 /opt/app-root/data:

<Context docBase="/opt/app-root/data/documents" path="/documents" />

下一个部署成功了。

我的问题是:

这是部署过程中的错误吗?

这是将环境变量注入(inject)配置文件的错误方法吗?

如果是这样,正确的方法是什么?

任何帮助将不胜感激,我不喜欢硬编码的东西,它总是会在未来的某个日期回来咬你......

最佳答案

V3 中没有设置 V2 中设置的任何特殊环境变量。对于 V3,也没有安装持久卷的标准位置,这取决于您将其安装在何处。该变量未显示为正在扩展可能仅仅是由于处理文件的原因,如果不存在此类环境变量,则将其保留为变量引用。这假设替换仍然发生在 V3 下并且不是 V2 的特殊之处。

如果你想保留环境变量以防你想覆盖它们,或者只是为了避免更改需要它们的代码,你可以在部署配置中设置环境变量,或者你可以添加一个 .s2i/environment 源代码仓库中的文件,并在其中添加环境设置。 .s2i/environment 文件中的那些在构建时实际上成为应用程序镜像的一部分。如果需要,它们稍后可以被部署配置中的环境变量覆盖。

关于tomcat - OpenShift 迁移 - Conf 文件中的 ENV 变量没有像以前那样被替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com