概述
因为工作需要搭建对象存储的测试环境,故而使用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 mainimport ("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 nameKey: 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详细步骤