离线包制作
从github上获取源码
$ git clone https://github.com/pivotal-cf/weblogic-buildpack
fileserver/ ├── jdk │ ├── index.yml │ ├── jdk-8u40-ea-bin-b05-linux-x64-10_sep_2014.tar.gz └── wls ├── index.yml └── wls1213_dev.zip并把这个目录用HTTP暴露出来,最简单的方法在该目录运行
$ python -m SimpleHTTPServer
创建文件:fileserver/wls/index.yml
内容:
--- 1.8.0_40: http://10.111.131.228:8000/fileserver/jdk/jdk-8u40-ea-bin-b05-linux-x64-10_sep_2014.tar.gz
创建文件:fileserver/jdk/index.yml
内容:
--- 12.1.13: "http://10.111.131.228:8000/fileserver/wls/wls1213_dev.zip"
修改
weblogic-buildpack/config/oracle_jre.yml
repository_root: "http://10.111.131.228:8000/fileserver/jdk"
weblogic-buildpack/config/weblogic.yml
version: 12.1.+ repository_root: "http://localhost:8000/fileserver/wls"且要修改配置文件:
weblogic-buildpack/config/oracle_jre.yml
version: 1.8.0_+ #detect_compiled: enabled #8: 1.8.0_+ #7: 1.7.0_+ #6: 1.6.0_+这可能是个bug,因为原有的格式,解析不了。
在weblogic-buildpack目录执行
$ bundle install
$ bundle exec rake package OFFLINE=true
在CF创建buildpack
$ cf create-buildpack weblogic build/weblogic-buildpack-offline-4a608a3.zip 1
排错
创建一个helloworld的应用
$ cf push hello-weblogic -b weblogic -p ~/apps/helloworld.war结果报错:
发现是在stage阶段执行buildpack的release报错,但无具体错误信息,
由于这个阶段是在warden容器中进行的,且失败后,容器会销毁。
登录到DEA容器注释代码中的destroy
代码/var/vcap/packages/dea_next/lib/dea/task.rb,在方法:promise_destroy和destroy直接返回return
重启dea_next
$ monit restart dea_next
重新部署
$ cf d hello-weblogic $ cf push hello-weblogic -b weblogic -p ~/apps/helloworld.war
进入容器
$ /var/vcap/packages/warden/warden/bin/warden --socket=/var/vcap/data/warden/warden.sock
当失败时检查日志,这时候容器还在,不会别销毁
查看容器
warden> list
发现这个有用的日志
继续看:
发现是metaspace参数不支持,原因找到,我下载的是jdk1.7,这个jdk是不支持这个内存参数的,于是下载jdk1.8,重新制作离线包。