开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
MinIO作为开源的对象存储框架,其强大的适配性、方便的操作界面使得它成为了自建对象存储的首选;本文将分享如何安装MinIO,介绍操作面板的使用,以及SDK调用
安装参考文档:hub.docker.com/r/bitnami/m…
GolangSDK:min.io/docs/minio/…
通过Docker安装MinIO
- 创建存储文件的目录
mkdir /root/data
- 运行MinIO,通过环境变量
MINIO_ROOT_USER、MINIO_ROOT_PASSWORD分别配置登入MinIO控制台的用户名和密码。
docker run -d --name minio \
--publish 9000:9000 \
--publish 9001:9001 \
--env MINIO_ROOT_USER="root" \
--env MINIO_ROOT_PASSWORD="password" \
--volume /path/to/minio-persistence:/root/data \
bitnami/minio:latest
操作面板介绍
- 登入
服务启动后,使用安装时配置的用户名和密码登入MinIO控制台
- 创建“一个桶”
桶(Bucket)可以理解为管理文件对象的文件夹,可以将有相同属性的资源放在同一个桶中
- 修改桶的可见性
在桶的列表中,点击需要管理的桶“Manage”,可设置桶中文件的可见性
使用Golang SDK调用MinIO
准备工作
- 安装MinIO的Golang客户端
go get github.com/minio/minio-go/v7
- 配置接入点、accessKeyID、secretAccessKey,这里的accessKeyID、secretAccessKey分别为登入MinIO控制台的用户名和密码,使用
minioClient来访问MinIO服务,并进行桶、文件等资源的管理
var (
endpoint = "127.0.0.1:9000" // 接入点
accessKeyID = "root" // 用户名
secretAccessKey = "password" // 密码
useSSL = false // 是否使用SSL
)
func init() {
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
}
文件上传
单文件上传中,核心是使用FPutObject这个方法,通过指定桶的名称、对象的名称、对象的路径等来上传文件
objectName := "test.jpg" // 对象名称
filePath := "./test.jpg" // 对象路径
contentType := "binary/octet-stream" // 正文类型
bucketName := "test" // 桶名称
info, _ := minioClient.FPutObject(context.Background(), bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType})
log.Printf("Successfully uploaded %s of size %d\n", objectName, info.Size)