在Python Flask Cloud Foundry中添加Java

时间:2018-03-09 12:00:31

标签: ibm-cloud cloudfoundry buildpack

我需要从使用cf部署的python flask应用程序运行java命令。我们如何让这个python烧瓶应用程序可以使用java运行时。

我尝试使用multi-buildpack,但是java_buildpack期望在部署应用程序时执行一些jar或war。

任何使java可用于python flask app的方法吗?

2 个答案:

答案 0 :(得分:1)

buildpack链中的最后一个buildpack负责确定启动应用程序的命令,这就是Java buildpack期望执行JAR / WAR的原因。

Java buildpack在编写本文时不提供supply脚本,因此在使用多buildpack支持时它只能作为 last buildpack运行。看起来在将来的某个时候,Java buildpack将提供supply脚本,但这仍然在制定here

目前,您可以使用apt-buildpack并以这种方式安装JRE / JDK。

为此,请将名为apt.yml的文件添加到项目文件夹的根目录中。在该文件中,输入以下内容:

---
packages:
- openjdk-8-jre
repos:
- deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main
keys:
- https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xEB9B1D8886F44E2A

这将告诉apt buildpack为Ubuntu Trusty添加PPA,我们可以获取最新的openjdk8。这将安装在/home/vcap/deps/0下,将java可执行文件置于/home/vcap/deps/0/lib/jvm/java-8-openjdk-amd64/bin/java

注意:遗憾的是java二进制文件不在路径上,因为Ubuntu使用update-alternatives的方式,我们无法使用该工具将其放在路径上在CF应用程序容器中,因为我们没有root访问权限。

设置完成后,您可以使用normal instructions来使用多个buildpack。

$ cf push YOUR-APP --no-start -b binary_buildpack
$ cf v3-push YOUR-APP -b https://github.com/cloudfoundry/apt-buildpack#v0.1.1 -b python_buildpack

注意:推送使用多个构建包的过程将来可能会发生变化,v3-push(目前正在试验中)将会消失。

注意:以上示例apt buildpack的硬编码版本v0.1.1。您应该使用最新的稳定版本,您可以找到here。建议不要使用主分支。

答案 1 :(得分:0)

实现组合Java和Python的目标的一种方法是使用context-based routing。我有一个example to combines Python and Node.js,但方法是一样的。

基本上,您有第二个应用程序服务于域/ URI的一个或多个路径。