从 cloudfoundry 任务命令访问 java 可执行文件(cf 运行-task)

Accessing the java executable from a cloudfoundry task command (cf run-task)

我需要 java 可执行文件到 运行 一个 java -jar 来自 cloudfoundry 任务 命令。

以下是我如何尝试 运行 任务:

cf run-task bignibou-batch "java -jar bignibou-batch/build/libs/bignibou-batch.jar"

这是我收到的错误消息:

2016-12-24T12:53:30.002+01:00 [APP/TASK/358e02df/0] [ERR] bash: java: command not found

我的清单使用 java 构建包如下(请参阅底部的 bignibou-batch 应用程序):

---
buildpack: https://github.com/cloudfoundry/java-buildpack.git
memory: 1024M
env:
  APPLICATION_URL: http://bignibou-server.cfapps.io/
  APPLICATION_MAIL_NO_REPLY_ADDRESS: balteo@bignibou-server.cfapps.io
  SPRING_PROFILES_ACTIVE: cloud

applications:
  - name: bignibou-server
    path: bignibou-server/build/libs/bignibou-server.jar
    env:
      APPLICATION_GOOGLE_API_KEY: *******************
  - name: bignibou-batch
    path: bignibou-batch/build/libs/bignibou-batch.jar
    no-hostname: true
    no-route: true
    env:
      JAVA_OPTS: -Dspring.batch.job.names=messagesDigestMailingJob

edit:当我尝试按如下方式设置 java buildpack 的位置时:

cf run-task bignibou-batch "$PWD/.java-buildpack/open_jdk_jre/bin/java -jar bignibou-batch/build/libs/bignibou-batch.jar"

$PWD 变量在发送命令之前在我的本地计算机上解析...

可在此处找到 java 可执行文件(假设使用 java buildback):

cf run-task bignibou-batch '$PWD/.java-buildpack/open_jdk_jre/bin/java -jar bignibou-batch/build/libs/bignibou-batch.jar'

但是,我不确定这是 运行 任务应用程序的 java 命令的最佳方式...

P.S。如果您认为它比这个更好,请随时添加您自己的答案。

edit:我已经编辑了路径并将硬编码的应用程序目录替换为 $PWD 变量。

一般来说,我们会考虑安装的 JRE 的位置,以及 运行 应用程序所需的命令,内部细节可能会在没有兼容性限制的情况下发生变化。据我所知(运行与 Java Buildpack 团队合作近四年)也没有合同义务要求将 droplet 安装在 /home/vcap,这就是为什么我们在我们的命令中使用 $PWD 非常小心。

基于 Java 的任务的其他早期用户已经允许完全暂存(这将确保内存计算和 JAVA_OPTS 之类的事情被正确地放置在命令中)然后使用该命令没有修改的行。

您看到 $PWD 提早解决的问题是逃避问题。您可能应该做的第一个更改是从双引号 (") 切换到单引号 ('),这应该确保不会立即解析 $。有可能管道中的其他地方环境再次提前解决,可能需要 $ 逃逸,但我会推迟,直到你确定你看到它。

要执行 spring 任务,我发现这很有用:

cf run-task vc-billing-task '$PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher' --name "vc-billing-task"

只需确保您的 java/build-pack 已更新为您的具体信息