全部产品
云市场

自定义 SOFABoot 技术栈

更新时间:2019-10-24 19:52:38

SOFAStack 提供默认的 SOFABoot 技术栈。您也可以制作自定义技术栈以满足特定场景下的业务需求。

自定义技术栈可以通过以下任一方式创建:

克隆技术栈并发布

克隆适用于基于一个已有技术栈进行修改的情况。原有技术栈包和环境参数等信息将被复用,无需重复填写。

操作步骤

  1. 进入应用管理控制台,选择 技术栈管理,进入默认的 技术栈 列表页。
  2. 在列表中选择一个已有技术栈,点击 克隆:clone
  3. 修改相应的技术栈基本信息:
    • 技术栈类型,如 SOFABoot, Spring Boot, Node.js 等。
    • 技术栈版本,包括版本前缀和后缀。其中后缀默认由系统随机生成。
    • 支持的操作系统列表
    • 是否开启调试模式。开启后技术栈将不能分享给其它租户。
    • 是否将技术栈分享给其它租户。
  4. 上传技术栈压缩包。

    说明:支持 .tgz, .tar, .tar.gz, .gzip, .gz, .tar.bz2, .bz2, .zip, .Z, .tar, .Z 格式的文件。文件大小不超过 1 GB。

  5. 添加环境参数:
    • 名称
    • 默认值
    • 是否必填
    • 是否只读
    • 描述
  6. 点击 发布确定
    • 发布:等待文件上传完毕并发布成功。
    • 确定:技术栈信息将被保存而不发布。您可以稍后从技术栈列表中重新选择发布该技术栈。

发布自定义技术栈后,还需要通过发布部署服务 将应用关联至技术栈,完成应用发布流程。

新建技术栈并发布

操作步骤

  1. 进入应用管理控制台,选择 技术栈管理,进入默认的 技术栈 列表页。
  2. 点击列表上方的 创建 按钮,进入 创建技术栈 页面。
  3. 修改技术栈配置,参考 克隆技术栈
    • 基础信息:版本、操作系统等。
    • 技术栈包文件
    • 环境参数列表
  4. 点击 发布确定
    • 发布:等待文件上传完毕并发布成功。
    • 确定:技术栈信息将被保存而不发布。您可以稍后从技术栈列表中重新选择发布该技术栈。

发布自定义技术栈后,还需要通过发布部署服务 将应用关联至技术栈,完成应用发布流程。

技术栈打包

操作步骤如下:

  1. 创建 技术栈目录结构
  2. 在目录下创建技术栈生命周期脚本和相关依赖。
  3. 将目录下所有脚本和相关依赖压缩成 .tgz 文件,生成技术栈包。在以下示例中,假定技术栈目录名为 sofaboot-buildpack
    1. $ cd sofaboot-buildpack
    2. $ tar -cvzf sofaboot-buildpack.tgz ./*

说明: .tgz 文件的名称与实际的技术栈名称无关。

技术栈目录结构

技术栈目录包含以下子文件夹:

  • conf/:存放技术栈配置文件,可选。内容可以为空。
  • lifecycle/:存放生命周期代码。理论上您可以使用任何语言来编写这些生命周期脚本。lifecycle 目录下所有文件名必须以专属前缀 ac_ 开头,且没有后缀。目前有如下命名固定的代码文件:
    • ac_setup:技术栈依赖的安装脚本,主要代码逻辑为读取 resources 目录下的文件,解压、安装、配置环境变量等。
    • ac_init_env:可选。部署前的相关任务处理任务。
    • ac_deploy:应用程序包的启动脚本。核心启动命令为:java -jar appname.jar
    • ac_check_service:可选。检测应用是否启动。
    • ac_shutdown:停止应用。
  • resources/:存放技术栈的依赖、生命周期代码的依赖等。如果您的技术栈足够简单,无需任何依赖,resources 文件夹可以为空。

示例

默认提供的 sofaboot-1.0.7 技术栈包的文件结构如下:

  1. sofaboot_buildpack_1.0.7-j180t2114 // 默认没有 conf 文件夹
  2. ├── lifecycle // 生命周期代码
  3. ├── ac_setup
  4. ├── ac_init_env
  5. ├── ac_deploy
  6. ├── ac_check_service
  7. └── ac_shutdown
  8. └── resources // 技术栈和生命周期代码的依赖
  9. ├── centos6.5 // 该技术栈在 CentOS 6.5 操作系统上的依赖
  10. ├── cronolog-1.7.0-0.x86_64.rpm
  11. ├── jdk-1.8.0_131-normal-1.x86_64.rpm
  12. ├── nginx-gray-module-0.0.2.rpm
  13. └── tengine-2.0.0-12298.el6u0.x86_64.rpm
  14. ├── centos7.2 // 该技术栈在 CentOS 7.2 操作系统上的依赖
  15. ├── cronolog-1.7.0.tgz
  16. ├── jdk-1.8.0_131-normal-1.x86_64.rpm
  17. ├── nginx-gray-module-0.0.2.rpm
  18. └── tengine-proxy-2.1.14.rpm
  19. ├── check_service.sh
  20. ├── deploy.sh
  21. ├── nginx.sh
  22. ├── stopApp.sh
  23. ├── util.py
  24. └── util.sh