繁体   English   中英

Cloud Foundry:如何使用额外的 JVM 命令部署 Spring Boot 应用程序

[英]Cloud Foundry : How to deploy spring boot app with an additional JVM command

我正在使用 Pivotal 在 Cloud Foundry 中托管 Spring 启动应用程序。 我可以在没有任何命令的情况下部署应用程序。 但我的要求是使用额外的 JVM 命令运行作为此问题的解决方法

-Doracle.jdbc.timezoneAsRegion=false

使用下面的清单运行我得到错误,

---
applications:
- name: gl-bo-sample   
  command: java -jar -Doracle.jdbc.timezoneAsRegion=false
  path: ./target/backoffice-1.0-SNAPSHOT.jar
  buildpacks:
      - https://github.com/cloudfoundry/java-buildpack.git

CF日志

2019-11-29T16:33:45.606+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a creating container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:45.952+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a successfully created container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:46.958+05:30 [CELL/0] [OUT] Starting health monitoring of container
2019-11-29T16:33:47.168+05:30 [APP/PROC/WEB/0] [ERR] bash: java: command not found
2019-11-29T16:33:47.179+05:30 [APP/PROC/WEB/0] [OUT] Exit status 127
2019-11-29T16:33:47.182+05:30 [CELL/SSHD/0] [OUT] Exit status 0
2019-11-29T16:33:47.385+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a stopping instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:47.385+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a destroying container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:47.402+05:30 [API/2] [OUT] Process has crashed with type: "web"

有人可以告诉如何实现这一目标或实现这一目标的任何其他方法。 谢谢。

好的,给你几件事。

命令:java -jar -Doracle.jdbc.timezoneAsRegion=false

  1. 使用 Java buildpack 时,除非您真的非常清楚自己在做什么,否则不要设置命令。 当您完全覆盖 Java buildpack 设置的命令时,它可能会导致问题。

  2. 如果设置了命令,则需要确保撤消它。 您可以通过将其从 manifest.yml 中删除并运行cf push -c null -c null将告诉服务器端删除 save 命令并返回使用 Java buildpack 决定的内容。 另一种选择是cf delete您的应用程序,但这并不总是可行的。

  3. 要设置 JVM 参数,您可以简单地cf set-env <app> JAVA_OPTS '-Doracle.jdbc.timezoneAsRegion=false ,或者通过在manifest.yml设置它们。 您可以添加一个env:块,其中包含 env 变量。

    前任:

     ... env: JAVA_OPTS: -Doracle.jdbc.timezoneAsRegion=false ...

    这是有效的,因为 Java 构建包在启动命令中包含$JAVA_OPTS ,因此您输入的任何内容都会替换为启动应用程序的命令。

  4. 如果您有一个可执行 JAR,您还可以使用cf set-env <app> JBP_CONFIG_JAVA_MAIN '{ arguments: "--server.port=9090 --foo=bar" }'来设置应用程序参数。 此选项用于设置由应用程序本身而非 JVM 处理的argv参数。 与 JAVA_OPTS 一样,您可以在manifest.ymlenv:块中设置它。

  5. 对于它的价值,你得到bash: java: command not found的原因是因为 Java buildpack 没有将java放在 PATH 上。 您需要设置java进程的完整路径,该路径位于$HOME/.java-buildpack/open_jdk_jre/bin/java 因此,如果您使用完整路径,则可以使上面的工作正常进行。 也就是说,强烈建议您不要设置command

  6. 边注。 不要将buildpack指向https://github.com/cloudfoundry/java-buildpack.git 当您执行此操作时,您指向的是主分支,这是一个移动目标。 您通常应该使用您的平台提供的 buildpack,即cf buildpacks ,或者在 URL 中添加一个发布标记,如https://github.com/cloudfoundry/java-buildpack.git#v4.26以获得 v4.26 Java 构建包。

希望有帮助!

您可以在 application.properties 中声明它,它应该可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM