Docker部署Minio小记
概述
因为工作需要搭建对象存储的测试环境,故而使用Docker部署Minio,测试通过博文记录用以备忘
步骤
拉取镜像
docker pull minio/minio
启动容器
docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123" \
-e "MINIO_REGION=cn-sz-1" \ #必须要加这句,不然会提示MissingRegion: could not find region configuration
-v /minio/data:/data \
minio/minio server \
/data --console-address ":9090" -address ":9000"
创建AccessKey
1.登录Minio Web控制台
2.创建Access Keys -> Create access key
3.写代码测试
测试例子
package main
import (
"bytes"
"fmt"
"log/slog"
"net/http"
"os"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
var (
bucket = "test-bucket"
accessKey = "OjoNSsmCfHfNo9Pn0s7B"
secretKey = "jYJypIdww6WJz4PC5v3UjgRakzCmCm6YSF24UBB4"
endpoint = "http://127.0.0.1:9000"
region = "cn-sz-1"
timeout time.Duration = time.Second * 5
)
func main() {
sess, err := session.NewSession(&aws.Config{
Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""),
Endpoint: &endpoint,
Region: ®ion,
S3ForcePathStyle: aws.Bool(true),
})
if err != nil {
slog.Warn(fmt.Sprintf("create OSS Session Failure... err=%s", err.Error()))
return
}
data, err := os.ReadFile("./test.go")
_, err = s3.New(sess).PutObject(&s3.PutObjectInput{
Bucket: aws.String(bucket), // bucket name
Key: aws.String("test.go"),
Body: bytes.NewReader(data),
ContentType: aws.String(http.DetectContentType(data)),
})
if err != nil {
slog.Error(fmt.Sprintf("PUT err = %v", err))
} else {
slog.Info("Upload OK")
}
}
参考链接
Docker部署minio详细步骤