Tencent CloudBase Framework Container Plugin

# Tencent CloudBase Framework Container Plugin

Github License Npm version (opens new window) issue (opens new window) PRs Welcome (opens new window) star (opens new window)

云开发 CloudBase Framework 框架「Container」插件: 通过云开发 CloudBase Framework (opens new window) 框架将项目应用一键部署到云开发的云托管环境,提供生产环境可用的自动弹性伸缩的高性能的容器计算服务。可以搭配其他插件如 Website 插件、Node 插件实现云端一体开发。

# 功能特性

  • 节约成本: 资源伸缩,弹性扩缩容,灵活计费,极大节约资源成本
  • 极简配置:自动检测框架,无须配置
  • 语言支持和框架支持广泛
    • Node.JS
    • PHP
    • Java
    • Go
    • Dart
    • Deno

# 使用方法

# 步骤一. 准备工作

具体步骤请参照 准备云开发环境和 CloudBase CLI 命令工具

# 步骤二. 进入项目目录进行初始化

如果是目前已有的后端应用项目

cloudbase

如果想全新开始一个项目,可以直接执行 init 来从模板开始一个项目

cloudbase init

# 步骤三. 一键部署

cloudbase framework deploy

# 配置

默认情况下不需要任何配置即可使用,以下配置参数针对有特殊需求的场景

# 配置示例

cloudbase init 之后会创建云开发的配置文件 cloudbaserc.json,可在配置文件的 plugins 里修改和写入插件配置

{
  "envId": "{{envId}}",
  "framework": {
    "plugins": {
      "client": {
        "use": "@cloudbase/framework-plugin-container",
        "inputs": {
          "serviceName": "node-api",
          "servicePath": "/node-api",
          "localPath": "./"
        }
      }
    }
  }
}

# 配置参数说明

# uploadType

选填,容器镜像代码来源类别,支持package|image|repository3 种,分别代表本地代码包、镜像地址和 git 仓库地址。默认是package, 选择image时需要填写 imageInfo, 选择 repository 需要填写codeDetail

# serviceName

必填,服务名,字符串格式,如 node-api

# servicePath

必填,服务路径配置, 字符串格式, 如 /node-api

# localPath

选填,本地代码文件夹相对于项目根目录的路径,默认值 ./

# localAbsolutePath

选填,本地代码文件夹的绝对路径

# version

选填,版本名,默认值 1.0.0

# isPublic

选填,是否对外网开放访问,默认值 true

# flowRatio

选填,流量占比(0-100),默认值 100

# mode

选填,副本模式

1.4.0 版本以后支持

副本模式,字符串格式,默认值 low-cost,可选值为 low-cost | high-availability

low-cost 代表低成本模式,会有冷启动延时,锁定最小副本数为 0,规格默认值为 0.25C0.5G,副本最小个数不可修改,要修改需要先切换模式。

high-availability 代表高可用模式,不存在冷启动,最小副本数不可以为 0,规格默认值为 1C1G,要修改最小副本数到 0 需要先切换模式。

# cpu

选填,CPU 的大小,0.25-128, 单位:核,默认值 0.25

# mem

选填,Mem 的大小,0.5-128, 单位:G,默认值 0.5

# minNum

选填,最小副本数, 0-50,默认值 0

# maxNum

选填,最大副本数,1-50,默认值 10

# policyType

选填,策略类型(cpu),默认值 cpu

# policyThreshold

选填,策略阈值,1-100, 默认值 60

# containerPort

选填,服务端口,默认值 80

# dockerfilePath

选填,Dockerfile 的路径,默认值 ./Dockerfile

# buildDir

选填,构建目录,默认值 ./

# envVariables

选填,环境变量键值对,会被注入到云托管的运行时环境变量中

# imageInfo

uploadType 填写为 image时需要填写 imageInfo,类型是对象格式

属性名称 类型 长度 是否必填 描述
imageUrl String 1-512 镜像拉取地址

imageUrl 格式为 [registry-url]/[namespace]/[image]:[tag],支持腾讯云 ccr.ccs.tencentyun.com 上的镜像地址,也支持 dockerhub 公开的镜像,如 nginx:latest

例如

{
  "envId": "{{envId}}",
  "framework": {
    "name": "capp-example",
    "plugins": {
      "client": {
        "use": "@cloudbase/framework-plugin-container",
        "inputs": {
          "serviceName": "node-api",
          "servicePath": "/node-api",
          "localPath": "./",
          "uploadType": "image",
          "imageInfo": {
            "imageUrl": "ccr.ccs.tencentyun.com/tcb-100010952056-rjdt/webpage_node-api:node-api-001-1597238358"
          }
        }
      }
    }
  }
}

# codeDetail

uploadType 填写为 repository 时需要填写codeDetail,类型是对象格式

属性名称 类型 长度 是否必填 描述
name CodeRepoName 对象 1-512 repo 的名字
url String 1-512 repo 的 url

例如

{
  "envId": "{{envId}}",
  "framework": {
    "name": "capp-example",
    "plugins": {
      "client": {
        "use": "@cloudbase/framework-plugin-container",
        "inputs": {
          "serviceName": "deno",
          "servicePath": "/deno",
          "localPath": "./",
          "uploadType": "repository",
          "codeDetail": {
            "name": "deno-docker",
            "url": "https://github.com/TabSpace/deno-docker"
          }
        }
      }
    }
  }
}

# volumeMounts

挂载目录设置,1.4.0 版本以后支持

类型是对象格式,key 为挂载路径,value 为挂载的 CFS Addon 的 Name

例如

{
  "version": "2.0",
  "envId": "{{env.ENV_ID}}",
  "framework": {
    "name": "grafana",
    "plugins": {
      "client": {
        "use": "@cloudbase/framework-plugin-container",
        "inputs": {
          "mode": "low-cost",
          "serviceName": "grafana",
          "servicePath": "/",
          "localPath": "./",
          "uploadType": "package",
          "containerPort": 3000,
          "envVariables": {},
          "volumeMounts": {
            "/var/lib/grafana": "grafana-cfs"
          }
        }
      }
    },
    "requirement": {
      "addons": [
        {
          "type": "CFS",
          "name": "grafana-cfs"
        }
      ]
    }
  }
}

# customLogs

可选,用户自定义采集日志路径, 1.4.0 版本以后支持

字符串格式,最长支持 1024

# initialDelaySeconds

可选,延迟多长时间开始健康检查

单位 s,支持设置 0-1000

# bumpVersion

可选,是否自动创建新版本

选择自动创建新版本,可以在控制台进行流量的灰度和控制,不选择的情况下会自动原位更新

# versionRemark

可选,版本备注信息

# 更多插件

请访问 CloudBase Framework 插件列表 (opens new window) 搭配使用其他插件

# 文档资料