从 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 已更新为您的具体信息
我需要 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 已更新为您的具体信息