将JAVA_选项添加到jboss-eap70-openshift

将JAVA_选项添加到jboss-eap70-openshift,openshift,openshift-origin,s2i,Openshift,Openshift Origin,S2i,我们使用s2i和openshift origin 3.4。如何添加JAVA_选项?我不想覆盖它们 此解决方案已弃用此映像似乎没有指定JAVA_OPTS,因此您应该能够编辑部署配置并在其中添加环境变量。然后,JBoss的标准standalone.sh脚本将尊重它 将环境变量添加到dc的命令: # list your deployment config oc get dc # Set environment variable on your dc oc set env dc/<jboss-

我们使用s2i和openshift origin 3.4。如何添加JAVA_选项?我不想覆盖它们


此解决方案已弃用

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

将环境变量添加到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>
第二种选择 我想到了另一个解决办法。如果选中
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中

要实现它,您需要设置env变量RUN_CONF=/path/To/my/script并装载此脚本-使用配置映射很容易实现

第三种选择 同样在
standalone.sh
中,
SERVER\u 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\u OPTS
的选项。有一些方法可以解决这个问题,但最简单的方法是在将选项传递给OpenShift时复制已有的选项。至少在可以扩展它而不仅仅是覆盖它之前

如中所述,您可以使用
JAVA\u OPTS\u APPEND
环境变量

这也是我的第一个想法,但这会覆盖默认的JAVA\u OPTS。启动时:
JAVA_选项已在环境中设置;使用值覆盖默认设置:
非常感谢您的解决方案!
exec $JBOSS_HOME/bin/openshift-launch.sh
exec $JBOSS_HOME/bin/standalone.sh -c standalone-openshift.xml -bmanagement 127.0.0.1 $JBOSS_HA_ARGS ${JBOSS_MESSAGING_ARGS}