Ism*_*ail 1 java cloud-foundry ojdbc spring-boot
我正在使用 Pivotal 在 Cloud Foundry 中托管 Spring boot 应用程序。我无需任何命令即可部署应用程序。但我的要求是使用额外的 JVM 命令运行作为此问题的解决方法
-Doracle.jdbc.timezoneAsRegion=false
Run Code Online (Sandbox Code Playgroud)
使用下面的清单运行我收到错误,
---
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
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何实现这一目标或任何其他方法来实现这一目标吗?谢谢。
好的,有几件事给你。
命令:java -jar -Doracle.jdbc.timezoneAsRegion=false
使用 Java buildpack 时,除非您真的非常清楚自己在做什么,否则不要设置命令。当您完全覆盖 Java 构建包设置的命令时,它可能会导致问题。
如果您设置了命令,则需要确保撤消它。您可以通过将其从 manifest.yml 中删除并运行来完成此操作cf push -c null。将-c null告诉服务器端删除保存命令并返回使用 Java 构建包决定的内容。另一种选择是cf delete您的应用程序,但这并不总是可行。
要设置 JVM 参数,您可以简单地cf set-env <app> JAVA_OPTS '-Doracle.jdbc.timezoneAsRegion=false或通过在manifest.yml. 您可以添加一个env:包含环境变量的块。
前任:
...
env:
JAVA_OPTS: -Doracle.jdbc.timezoneAsRegion=false
...
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为 Java buildpack 包含$JAVA_OPTS在启动命令中,因此您在其中放入的任何内容都会替换为启动应用程序的命令。
如果您有可执行 JAR,您还可以使用它cf set-env <app> JBP_CONFIG_JAVA_MAIN '{ arguments: "--server.port=9090 --foo=bar" }'来设置应用程序参数。此选项用于设置argv由应用程序本身而不是 JVM 处理的参数。与 JAVA_OPTS 相同,您可以env:在manifest.yml.
无论如何,您得到的原因bash: java: command not found是 Java 构建包没有放在javaPATH 中。java您需要设置位于 的进程的完整路径$HOME/.java-buildpack/open_jdk_jre/bin/java。因此,如果您使用完整路径,则可以使您正在做的事情正常工作。也就是说,强烈建议您不要设置command.
边注。不要buildpack指着https://github.com/cloudfoundry/java-buildpack.git。当您执行此操作时,您将指向主分支,这是一个移动目标。您通常应该使用您的平台提供的构建包,即cf buildpacks,或者向 URL 添加发布标签,例如https://github.com/cloudfoundry/java-buildpack.git#v4.26获取 Java 构建包的 v4.26。
| 归档时间: |
|
| 查看次数: |
4939 次 |
| 最近记录: |