docker啓動minio
在/home下創建minio的數據和配置目錄
啓動minio服務
docker run -d -p 9000:9000 --name minio \
--net=host \
-e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
-v /home/minio/data:/data
-v /home/minio/config:/root/.minio \
minio/minio server /data
--net暴露ip可以外部訪問
MINIO_ACCESS_KEY、MINIO_SECRET_KEY用於瀏覽器訪問服務的賬號和密碼
-v /home/minio/data:/data 用於掛載容器數據到宿主機 -v /home/minio/config:/root/.minio 用於掛載容器配置到宿主機
瀏覽器訪問minio
http://172.18.0.64:9000/
api使用
安裝minio依賴
go get -u github.com/minio/minio-go
編寫測試用例
package main
import (
"fmt"
"github.com/minio/minio-go"
"hydrogen.com/library/utils/log"
)
const (
endpoint = "172.18.0.64:9000"
accessKeyID = "AKIAIOSFODNN7EXAMPLE"
secretAccessKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
useSSL = false
)
func upload(){
// 初使化 minio client對象。
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatal(err)
}
log.Infof("%s\n", minioClient) // minioClient初使化成功
// 創建一個叫mymusic的存儲桶。
bucketName := "hydrogen"
location := "cn-north-1"
err = minioClient.MakeBucket(bucketName, location)
if err != nil {
// 檢查存儲桶是否已經存在。
exists, err := minioClient.BucketExists(bucketName)
if err == nil && exists {
log.Infof("We already own %s\n", bucketName)
} else {
log.Fatal(err)
}
}
log.Infof("Successfully created %s\n", bucketName)
// 上傳一個zip文件。
objectName := "iris.txt"
filePath := "E:/iris.txt"
contentType := "text/plain"
// 使用FPutObject上傳一個zip文件。
n, err := minioClient.FPutObject(bucketName, objectName, filePath, minio.PutObjectOptions{ContentType:contentType})
if err != nil {
log.Fatal(err)
}
log.Infof("Successfully uploaded %s of size %d\n", objectName, n)
}
func getObject(){
// 初使化 minio client對象。
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatal(err)
}
log.Infof("%s\n", minioClient) // minioClient初使化成功
// 創建一個叫mymusic的存儲桶。
bucketName := "hydrogen"
objectName := "iris.txt"
object, err := minioClient.GetObject(bucketName, objectName, minio.GetObjectOptions{})
if err != nil {
fmt.Println(err)
return
}
log.Infof("%s\n", object)
}
func getFObject(){
// 初使化 minio client對象。
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatal(err)
}
log.Infof("%s\n", minioClient) // minioClient初使化成功
// 創建一個叫mymusic的存儲桶。
bucketName := "hydrogen"
objectName := "iris.txt"
filePath := "E:/test/iris.txt"
err = minioClient.FGetObject(bucketName, objectName, filePath, minio.GetObjectOptions{})
if err != nil {
fmt.Println(err)
return
}
}
func main() {
//上傳
upload()
//下載到本地
getFObject()
}