Cloud Foundry的buildpack结构

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2017/05/07/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目录中,或者在第二步手动删除。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2017/05/07/cloud-foundry-buildpack/

发表评论