Buildpack作为开源软件是PaaS平台cloudfoundry的给应用打包,提供运行时环境的工具,Javabuildpack是提供Java应用运行时和框架的组件,使用ruby脚本语言,不过Java应用不都是依赖tomcat,也有的是用play等容器运行,,即使是tomcat,每个应用也可能做了定制化的改造,比如修改tomcat参数、一个tomcat运行几个war包,都是很常见,事无巨细,所以buildpack不可能照顾全面,这里面对一些需求对官网源码的改造bindetect 对应用监测阶段,检测应用类型,是否有合适的组件和容器去运行应用
compile 编译阶段,把应用和buildpack融合,类似把应用拷贝到tomcat下面
release 容器打包成droplet并启动,读取启动参数,执行启动命令
首先是应用有对tomcat进行改动
buildpack本身是对tomcat的一些配置进行了替换,在buildpack的resources/tomcat/conf下面context.xml
logging.properities
server.xml
这三个文件和tomcat不一样,为了应用在cloudfoundry上运行,进行的改造,我们如果想使用自己的tomcat,就需要把conf下面的配置替换到droplet中,在tomcat.rb中,在启动命令之前执行'`cp /home/vcap/app/路径/* /home/vcap/app/.java-buildpack/tomcat/conf/;`',
Javabuildpack使用的是软连接,而不是拷贝操作,这块因为一些应用在tomcat里运行,通过软连接的方式无法运行成功,或者不能加载一些模版,这块把软连接的操作改成了拷贝的操作