【问题标题】:Add JAVA_OPTS to jboss-eap70-openshift将 JAVA_OPTS 添加到 jboss-eap70-openshift
【发布时间】:2017-02-20 12:03:35
【问题描述】:

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

此解决方案已弃用Not able to set options in JAVA_OPTS in JBoss openshift

【问题讨论】:

    标签: openshift openshift-origin s2i


    【解决方案1】:

    此图像似乎没有指定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>
    

    评论后更新

    第一个选项

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

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

    您可以在standalone.conf 文件中找到您的消息。 sn-p 非常简单,因此您只需在环境变量中重复相同的设置即可。

    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-use-case-consuming-in-volumes

    第三个选项

    同样在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 时已经存在的选项。至少直到可以扩展它而不仅仅是覆盖。

    【讨论】:

    • 这也是我的第一个想法,但这会覆盖默认的 JAVA_OPTS。开始时:JAVA_OPTS already set in environment; overriding default settings with values: &lt;env variables&gt;
    • 非常感谢您的解决方案!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 2013-07-05
      • 1970-01-01
      • 2012-01-21
      • 2020-10-28
      • 1970-01-01
      • 2012-01-15
      • 2019-08-18
      相关资源
      最近更新 更多