如何将开源容器应用快速打造为云开发应用
云开发应用可以理解为运行在云开发环境的应用,例如一个包含前后端、数据库等能力等服务,可以通过一键部署,直接部署在云开发环境中,使用云开发底层的各项 Serverless 资源,享受弹性免运维的优势。
一个云开发应用可以拆解为三个部分,包括代码、声明式配置和环境变量信息。
下面我们以开源存储项目Nextcloud为例,演示如何将一个开源的容器化的项目快速打造为可以一键部署的云开发应用。
Nextcloud 是一套个人云存储解决方案,内置了图片相册、日历联系人、文件管理、RSS 阅读等丰富的应用,这个应用本身是开源的,同时提供了部署的 Docker 镜像,需要搭配 MySQL 数据库,下面会演示如何实现这个应用的一键部署。
一键部署的流程也非常简洁,只需三步即可在云开发控制台快速安装部署:
开发
开发环节在此不作重点介绍,可以通过文末的源码链接来了解具体的实现。
开发用到的云开发和云上其他资源
云开发的云托管服务:使用云托管来部署应用的后端服务;
CynosDB:使用 CynosDB 数据库存储数据;
CFS:使用 CFS 持久化存储数据。
配置
有了项目的代码之后,如何把这个应用打造成为可以一键部署的云开发应用呢?
配置应用基础信息
cloudbaserc.json
配置文件,文件的内容如下。"envId": "{{env.ENV_ID}}",
"version": "2.0",
"$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
"framework": {
"name": "nextcloud",
"plugins": {}
}
}
要点
envId
指定应用部署在哪个环境下,这里我们用模板变量env.ENV_ID
表示读取ENV_ID
环境变量;framework.name
是应用的英文名,只支持 A-Z a-z 0-9 - 和 _,长度 1-32 位;framework.plugins
是应用用到的插件信息,这里先留空,下面我们根据资源和应用类型来填写;如果需要了解更多项目信息的配置,请参考应用项目信息说明文档。
使用云托管插件
这一步我们需要使用云托管插件*,来自动化地部署容器服务到云开发的云托管上。
framework.plugins
下增加一个字段 server
,字段的值是一个 JSON 对象。"server": {
"use": "@cloudbase/framework-plugin-container",
"inputs": {
"cpu": 0.5,
"mem": 1,
"serviceName": "nextcloud",
"servicePath": "/",
"uploadType": "image",
"containerPort": 80,
"imageInfo": {
"imageUrl": "nextcloud:20"
},
"envVariables": {
"MYSQL_HOST": "{{env.DB_IP}}:{{env.DB_PORT}}",
"MYSQL_DATABASE": "nextcloud"
},
"volumeMounts": {
"/var/www/html": "nextcloud-cfs"
}
}
}
}
*操作要点可点击阅读原文查看
配置应用参数和依赖
在部署应用时,还可能需要用户来输入一些自定义的参数,或者配置像上文提到的云上外部资源。
这些都可以在framework.requirement
中进行配置:
字段 | 描述 | 类型 |
---|---|---|
addons | 应用部署过程中用到的外部云上资源,包括 cfs、cynosdb、redis 等 | AddonsConfig |
environment | 应用在构建时和运行时的环境变量配置声明,默认注入计算环境中(云函数、云应用),也会在云端构建时作为构建部署的环境变量,可以在 cloudbaserc.json 中通过 {{env.ENV_NAME}} 引用 | EnvironmentConfig |
framework.requirement
中添加如下 JSON 配置。"requirement": {
"addons": [
{
"type": "CFS",
"name": "nextcloud-cfs"
},
{
"type": "CynosDB",
"name": "nextcloud",
"envMap": {
"IP": "DB_IP",
"PORT": "DB_PORT",
"USERNAME": "MYSQL_USER",
"PASSWORD": "MYSQL_PASSWORD"
}
}
]
}
}
部署验证
生成部署按钮
接下里我们就可以上传代码到 Git,来生成一个一键部署按钮了。首先打开一键部署按钮生成地址:
在页面当中输入项目的 Git 地址,配置文件所在目录以及分支信息,就可以自动生成下面的部署按钮代码片段。
Markdown 代码适合用在 README、Mardkown 编写的博客文章等场景;
HTML 代码适合用在公众号、HTML 编写的网站/博客文章等场景;
URL 链接可以在任何支持超链接的页面使用,您可以复制下方链接,粘贴到对应的页面中。
总结
在这篇文章中,我们了解了什么是云开发应用,并以 Nextcloud 项目为例,介绍了如何将开源的容器化的项目,快速打造为可以一键部署的云开发应用。
通过实战,我们也展示了云开发以及 CloudBase Framework 的使用:只需要完成开发、配置以及部署验证,就可以快速将应用变为可以快速分发的程序,用户无需手动搭建环境和配置,即可自动化部署应用。
参考文档
项目演示地址:
https://fx-1259727701.ap-shanghai.service.tcloudbase.com/
</>
更多精彩
点击下方图片即可了解
由于公众号推送规则更改,请多多分享、点赞和“在看”,以及时获取云开发Cloudbase的最新动态。
点击在看让更多人发现精彩