0%

对象存储-minio

minio 对象存储

引入原因

1、文件上传功能,不自己写上传接口
2、不用应用服务器 nginx 部署
3、权限设置,不希望有数据对外展示
4、阿里云对象存储收费

相关内容

安装

1
2
3
4
5
6
docker pull minio/minio

## 9000为api接口,9090为控制台管理界面接口
docker run -p 9000:9000 -p 9090:9090 --name minio -v H:\minio\data:/data -v H:\minio\config:/root/.minio minio/minio server --console-address ":9090" /data

## 浏览器访问127.0.0.1:9090 默认登录minioadmin/minioadmin

客户端使用

1
2
3
4
5
docker pull minio/mc
docker run minio/mc ls play
docker run -it --entrypoint=/bin/sh minio/mc
mc config host add minio http://api-minio.foxhello.com 52trhHBInpg9UGpm 秘钥 --api s3v4
mc ls minio

curl上传 centos正常,mac有问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 设置Access Key和Secret Key
ACCESS_KEY="upload"
SECRET_KEY=""

# 设置上传的文件路径、Bucket名称和Object名称
FILE_PATH="/Volumes/T7/project/project_fmzh/test.md"
BUCKET_NAME="test"
OBJECT_NAME="test.md"

# 构建HTTP PUT请求,并添加认证头部信息
#DATE=$(date -u "+%a, %d %b %Y %H:%M:%S GMT")
#DATE=$(date "+%Y%m%dT%H%M%S%z")
DATE="Tue, 21 Feb 2023 05:41:57 GMT"
CONTENT_TYPE=$(file --mime-type $FILE_PATH | awk '{print $2}')
CONTENT_MD5=$(openssl md5 -binary $FILE_PATH | base64)
STRING_TO_SIGN="PUT\n$CONTENT_MD5\n$CONTENT_TYPE\n$DATE\nx-amz-acl:public-read\n/$BUCKET_NAME/$OBJECT_NAME"
SIGNATURE=$(echo -en "$STRING_TO_SIGN" | openssl sha1 -binary -hmac "$SECRET_KEY" | base64)
curl -X PUT -T "$FILE_PATH" \
-H "Host: minio-api.foxhello.com" \
-H "Date: $DATE" \
-H "Content-Type: $CONTENT_TYPE" \
-H "Content-MD5: $CONTENT_MD5" \
-H "Authorization: AWS $ACCESS_KEY:$SIGNATURE" \
-H "x-amz-acl:public-read" \
"https://minio-api.foxhello.com/$BUCKET_NAME/$OBJECT_NAME"

存在问题

1、修改管理员密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改密码
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=***

docker run -d \
--name minio \
--restart=always \
-p 9000:9000 \
-p 9001:9001 \
-e "MINIO_ROOT_USER=minioAlan" \
-e "MINIO_ROOT_PASSWORD=miniokillccc" \
-v /www/docker/minio/config:/root/.minio \
-v /www/docker/minio/data:/data \
minio/minio \
server /data --console-address ":9001" --address ":9000"

2、对外如何访问
代码
3、预览不能展示图片
见 4
4、永久访问

1
2
3
4
5
6
7
# 将bucket设置为public jpg直接能在浏览器打开

#直接下载:
http://api-minio.foxhello.com/fmzh/logo.png

#可在浏览器打开:
http://api-minio.foxhello.com/fmzh/logo.png?response-content-type=image%2Fpng

参考

  1. minio 使用 docker 部署
  2. minio 源码-GitHub
  3. minio 官网文档-中文 版本较旧
  4. minio 官网
  5. minio 官网文档-英文 版本较新 以此学习
  6. minio 包 maven 下载
  7. minio 修改密码
  8. minio docker 部署 设置密码