这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
本篇文章,我将介绍minio的配置以及hertz如何使用minio
minio安装配置
这里我们选择最简单的安装方式:docker
docker的安装,此处略过
装好docker后,运行如下命令
docker run -it -p 9000:9000 -p 43543:43543 -d minio/minio server /data --console-address ":43543" --address ":9000"
上述命令会pull并在本地启动一个minio的容器。并且其api服务地址为(之后获取资源的请求地址): 127.0.0.1:9000,web管理界面为: 127.0.0.1:43543
安装好之后,我们创建一个douyin桶,并将douyin桶策略的权限设置为public,这是为了我们之后可以直接通过api地址和资源名字构造资源的url,方便作为资源访问服务。
hertz中接入
这里我做了一个minio_server层来管理minio相关的代码
我们使用github.com/minio/minio-go/v7开发连接客户端。
其中,init_minio.go是minio服务的客户端初始化代码:
定义了一个全局的客户端指针,定义了一个通用的配置结构体,然后在Init中实现了minio客户端连接的逻辑。
我们在main.go中初始化服务:
这样,代码其他部分就可以通过使用这个全局的客户端指针来进行minio的操作了。
minio服务层
为了代码分层,我们继续在minio_server中实现一些通用的操作逻辑。
一个通用的上传逻辑:
然后是本项目中需要实现的一个特殊上传任务:视频上传及封面生成
这个函数中,我们将存在临时目录/tmp的视频文件,使用ffmpeg进行封面生成,然后将其上传到minio,并返回视频的url和封面的url。
具体的代码参考这里:douyin/service.go at master · ClubWeGo/douyin (github.com),太长就不贴了。