hertz接入minio作为存储-2 | 青训营笔记

80 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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相关的代码

image.png

我们使用github.com/minio/minio-go/v7开发连接客户端。

其中,init_minio.go是minio服务的客户端初始化代码:

image.png

定义了一个全局的客户端指针,定义了一个通用的配置结构体,然后在Init中实现了minio客户端连接的逻辑。

我们在main.go中初始化服务:

image.png

这样,代码其他部分就可以通过使用这个全局的客户端指针来进行minio的操作了。

minio服务层

为了代码分层,我们继续在minio_server中实现一些通用的操作逻辑。

一个通用的上传逻辑:

image.png

然后是本项目中需要实现的一个特殊上传任务:视频上传及封面生成

image.png

这个函数中,我们将存在临时目录/tmp的视频文件,使用ffmpeg进行封面生成,然后将其上传到minio,并返回视频的url和封面的url。

具体的代码参考这里:douyin/service.go at master · ClubWeGo/douyin (github.com),太长就不贴了。