2

我们使用jboss-eap70-openshift和 s2i 和 openshift origin 3.4。如何添加 JAVA_OPTS?我不想覆盖它们

此解决方案已弃用无法在 JBoss openshift 的 JAVA_OPTS 中设置选项

4

2 回答 2

2

此图像似乎没有指定JAVA_OPTS,因此您应该能够只编辑部署配置并在那里添加环境变量。然后它将被standalone.shJBoss 的标准脚本尊重。

将环境变量添加到 dc 的命令:

# list your deployment config
oc get dc 

# Set environment variable on your dc
oc set env dc/<jboss-dc> JAVA_OPTS=<your env variables>

评论后更新

第一个选项

查看 JBoss 启动文件后,没有简单的方法可以做到这一点。您可以使用以下命令下载启动脚本:

mkdir scripts
cd scripts
oc rsync <pod>:/opt/eap/bin .

在那里您可以在standalone.conf文件中找到您的消息。该片段非常简单,因此您可以在环境变量中重复相同的设置。

if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m  -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"
else
   echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi

第二种选择

我想到了另一个解决方案。如果你检查standalone.sh文件,你可以看到以下几行:

# Read an optional running configuration file
if [ "x$RUN_CONF" = "x" ]; then
    RUN_CONF="$DIRNAME/standalone.conf"
fi
if [ -r "$RUN_CONF" ]; then
    . "$RUN_CONF"
fi

这意味着您可以传递您自己的初始化脚本,您首先在其中执行standalone.conf然后读取一些环境变量并将其添加到 JAVA_OPTS。

要实现它,您需要设置环境变量 RUN_CONF=/path/to/my/script 并挂载此脚本 - 使用配置映射很容易实现https://docs.openshift.org/latest/dev_guide/configmaps.html#configmaps -用例消耗量

第三个选项

同样在standalone.sh变量SERVER_OPTS中是从传递给的参数创建的standalone.sh。然后这个变量被传递给启动java,所以我相信你可以在那里隐藏你的选项。

OpenShift/bin/sh -c /usr/local/s2i/run在启动时启动并且此脚本启动

exec $JBOSS_HOME/bin/openshift-launch.sh

不幸的是,在这种情况下openshift-launch.sh必须替换它,因为它在启动 JBoss 时不需要更多参数:

exec $JBOSS_HOME/bin/standalone.sh -c standalone-openshift.xml -bmanagement 127.0.0.1 $JBOSS_HA_ARGS ${JBOSS_MESSAGING_ARGS}

概括

此图像不提供扩展JAVA_OPTS. 有一些方法可以解决它,但最简单的方法是复制将它们传递给 OpenShift 时已经存在的选项。至少直到可以扩展它而不仅仅是覆盖。

于 2017-02-20T22:30:59.127 回答
1

Openshift add java option中指定的,您可以使用JAVA_OPTS_APPEND环境变量

于 2017-09-21T08:28:48.410 回答