网站首页 > 教程文章 正文
坚持原创,共同进步!请关注我,后续分享更精彩!!!
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
MinIO存储的对象文件可以是任意大小,从几kb到最大5T不等。若有使用过阿里云的oss服务,MinIO可提供相似的功能。
MinIO docker安装
MinIO 需要一个持久卷来存储配置和应用数据。要创建具有永久存储的MinIO容器,需要将本地持久目录从主机操作系统映射到虚拟配置minio 并导出/data目录。
docker run -p 9000:9000 \
--name minio \
-v /home/minio/data:/data \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
minio/minio server /data
其中:
-v /home/minio/data:/data 参数把宿主机目录(/home/minio/data)挂载到docker容器内。
MINIO_ROOT_USER和MINIO_ROOT_PASSWORD参数设置MinIO Access和Secret密钥。
容器启动成功后,浏览器访问地址:
http://{ip}:9000/minio/login
web界面输入上面配置的access和secret,点击登录。
登录成功首页
Java clinet
为方便对象的操作,MinIO官方提供了多种语言的client客户端SDK。这里以Java为例。
maven依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.10</version>
</dependency>
测试代码
MinIO服务,对存储其上的对象资源文件,以bucket(桶)的方式进行分类。以下代码以图片文件的上传下载为例。
@Test
public void testMinIoPutAndGet() throws InvalidPortException, InvalidEndpointException, IOException, InvalidKeyException, NoSuchAlgorithmException, InsufficientDataException, ErrorResponseException, NoResponseException, InvalidBucketNameException, XmlPullParserException, InternalException, RegionConflictException, InvalidObjectPrefixException, InvalidArgumentException, InvalidExpiresRangeException {
//替换为实际地址ip
String url = "http://192.168.**.***:9000/";
String accessKey = "AKIAIOSFODNN7EXAMPLE";
String secretKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";
//创建minio client
MinioClient minioClient = new MinioClient(url,accessKey,secretKey);
String bucket = "minio.test.bucket";
String objectName = "testPic.png";
String file = "d:/testPic.png";
boolean isExists = minioClient.bucketExists(bucket);
if (!isExists) {
//bucket桶不存在,则创建
minioClient.makeBucket(bucket);
/*
设置bucket策略类型。前缀为*,策略只读,表示指定bucket下所有文件访问不需权限验证。
请根据业务场景,谨慎设置!!!
屏蔽该行代码,设置bucket下的文件对象默认需要权限验证。
*/
minioClient.setBucketPolicy(bucket,"*", PolicyType.READ_ONLY);
}
//上传文件
minioClient.putObject(bucket,objectName,file);
//获取文件访问路径
String fileObjPath = minioClient.getObjectUrl(bucket,objectName);
log.info("access object full path is {}",fileObjPath);
//获取文件临时访问路径。有效时间单位为秒,不能大于7天。
String presignedPath = minioClient.presignedGetObject(bucket,objectName,3600);
log.info("access object temp path is {}",presignedPath);
}
注意:
bucket的名字需要遵守一定命名规范,字符中不能存在大写。详细请参见官方文档:
https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
查看web管理界面,minio.test.bucket已创建成功。
用例执行结果:
复制控制台打印图片地址,浏览器可直接访问。
小结
本文对分布式对象存储服务MinIO进行了简单介绍。通过服务的docker安装,web管理界面访问,java client测试用例使用学习,相信大家对minIO有了整体的认识。
希望本文分享对大家有所帮助和参考。若存在不足之处,请多多指教,欢迎留言讨论。
猜你喜欢
- 2024-12-22 有遇到部署服务器后刷新404问题吗?
- 2024-12-22 PolarDB-X on OSS: 冷热数据分离存储
- 2024-12-22 阿里云OSS+又拍云CDN加速 又拍云cdn配置
- 2024-12-22 阿里云OSS上传图片不能打开的解决办法
- 2024-12-22 uniapp 上传阿里云oss uniapp上传图片到服务器失败
- 2024-12-22 阿里云产品火爆的存储服务-对象存储OSS
- 2024-12-22 阿里云OSS对象存储STS鉴权配置 简要介绍阿里云对象存储oss的使用场景
- 2024-12-22 spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)
- 2024-12-22 配置阿里云OSS图床 阿里云 oss 图片
- 2024-12-22 Springboot项目整合阿里云OSS看这篇就够了
- 06-18CentOS7安装Mongodb 4.x.x(centos7安装openstack)
- 06-18Window环境配置Mongodb(mongodb默认配置文件路径)
- 06-18FineReport如何连接和使用MongoDB数据库
- 06-18nosql之mongodb(nosql怎么读正确发音)
- 06-18Mongodb centos7安装(mongodb4.4.2安装教程)
- 06-18群晖(Synology)NAS 安装 MongoDB(群晖安装nat123)
- 06-18MongoDB 安装及实践(mongodb的安装过程和操作命令)
- 06-18MongoDB最全详解(万字图文总结)(mongodb lsm)
- 最近发表
-
- CentOS7安装Mongodb 4.x.x(centos7安装openstack)
- Window环境配置Mongodb(mongodb默认配置文件路径)
- FineReport如何连接和使用MongoDB数据库
- nosql之mongodb(nosql怎么读正确发音)
- Mongodb centos7安装(mongodb4.4.2安装教程)
- 群晖(Synology)NAS 安装 MongoDB(群晖安装nat123)
- MongoDB 安装及实践(mongodb的安装过程和操作命令)
- MongoDB最全详解(万字图文总结)(mongodb lsm)
- CentOS安装MongoDB教程(centos安装mpich)
- MongoDB入门指南:下载、安装和配置一款强大的NoSQL数据库
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)