簡體   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