概述
因為工作需要搭建對象存儲的測試環境,故而使用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詳細步驟