Cloud Foundry的buildpack结构

作者:

Buildpack是Cloud Foundry中一个很基本的组件。它意在为应用提供框架和运行环境的支持。也就是说当你上传内容物到Cloud Foundry上时,会根据Buildpack的内容为你准备必要的基本内容物来支持你的应用。

一个Buildpack通常要包括以下三个关键步骤:

  1. 检测
  2. 编译
  3. 发布

其中的检测步骤主要是判断当前上传的内容物是否可以使用当前的buildpack处理,一般情况下检测可以很简单,比如一个gradle-java-buildpack就可以检测当前目录是否包含build.gradle文件。

#!/usr/bin/env bash
# bin/detect <build-dir>

elif [ -f $1/build.gradle ]; then
  echo "Gradle" && exit 0

else
  echo "no" && exit 1
fi

编译步骤主要是准备必要的依赖和环境,这里就要分两种情况了,就是编译是否真正发生。如果上传的内容物是一个jar,那就只需要提供jre就行了,如果上传的内容物是源代码,那就是需要jdk环境,并且执行必要的编译打包步骤,最后在提取运行包。

具体使用哪种情况主要看对于Cloud Foundry的使用偏好,我是比较喜欢在Cloud Foundry直接编译的。

一般情况下这一步会比较耗时,以java项目为例,下载一个jdk或者jre是必要的,为了节约时间,Cloud Foundry会在这一步提供一个缓存目录以供使用。

最后一步是发布,这一步必须生成一个YAML文件,里面是必要的运行命令。

类似于:

default_process_types:
  web: bundle exec rackup config.ru -p $PORT

如果需要清理一些内容,可以考虑一开始就放在tmp目录中,或者在第二步手动删除。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注