搭建MinIO对象存储
创作时间:
作者:
@小白创作中心
搭建MinIO对象存储
引用
CSDN
1.
https://blog.csdn.net/weixin_44750617/article/details/137457965
对象存储作为企业中数据存储必不可少的工具之一,目前市面上为了方便,大都使用阿里云OSS、腾讯COS等。作为个人使用,其实也可以简单搭建私有的独立IP的对象存储工具,部署在自己的服务器或者是本地的机器上。本文将介绍如何搭建MinIO对象存储以及在SpringBoot项目中使用MinIO。
一、搭建MinIO
Docker方式
启用下面的命令后,文件将存储在容器中的/data目录下。建议持久存储容器中的文件数据,使用-v /opt/minio/data:/data
将容器中的/data目录映射到本机上的/opt/minio/data。启动后打开127.0.0.1:9000,默认的账号密码为都为minioadmin。
docker run -p 9000:9000 -p 9001:9001 \
quay.io/minio/minio server /data --console-address ":9001"
# 建议自己做映射
#docker run -p 9000:9000 -p 9001:9001 \
# -v /local/path:/data \
# quay.io/minio/minio server /data --console-address ":9001"
Mac方式
使用brew下载安装minio,没有brew的先看下怎么安装brew
# 使用brew安装minio
brew install minio/stable/minio
# 启动minio,替换/data为本地路径/Users/xxx/Downloads
minio server /data
Linux方式
二进制方式进行安装:
- 64 位英特尔/AMD:https://dl.min.io/server/minio/release/linux-amd64/minio
- 64位ARM:https://dl.min.io/server/minio/release/linux-arm64/minio
- 64 位 PowerPC LE (ppc64le):https://dl.min.io/server/minio/release/linux-ppc64le/minio
- IBM Z 系列 (S390X):https://dl.min.io/server/minio/release/linux-s390x/minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
# 替换/data为本地路径
./minio server /data
安装启动完成后,使用http://127.0.0.1:9000 打开,创建一个名称为test的桶。
二、SpringBoot中使用
引入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.0.3</version>
</dependency>
配置相关参数
在properties文件中定义相关配置:
# ip和端口
minio.endpoint=127.0.0.1
minio.port=9000
# 账号密码
minio.accessKey=minioadmin
minio.secretKey=minioadmin
minio.secure=false
# 桶的名称
minio.bucketName=test
定义Bean
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
private String endpoint;
private int port;
private String accessKey;
private String secretKey;
private Boolean secure;
@Bean
public MinioClient getMinioClient() {
return MinioClient.builder()
.endpoint(endpoint, port, secure)
.credentials(accessKey, secretKey)
.build();
}
}
文件上传示例
在需要的地方引入使用MinioClient,后续可以自己封装为一个工具类:
@Resource
private MinioClient minioClient;
/**
* 上传文件
* @param file 文件
* @param folder 目录
*/
public void upload(MultipartFile file, String folder) {
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
String uploadName = System.currentTimeMillis() + "." + suffix;
// 文件路径
String finalName = folder + "/" + uploadName;
try {
PutObjectArgs build =
PutObjectArgs.builder()
.bucket("test")
.object(finalName)
.contentType(file.getContentType())
.stream(file.getInputStream(), file.getSize(), -1)
.build();
minioClient.putObject(build);
} catch (Exception e) {
e.printStackTrace();
}
}
想要搭建图床的话上床图片到MinIo中的话,可以自己写一个程序,在代码中实现上传到MinIo中,对于自定义图床的实现,可以参考我的另一篇文章自定义图床。
热门推荐
煎鸡排看似简单,实则蕴含了许多技巧和细节
如何确定厨房插排的接线方式?接线过程中需要注意哪些安全问题?
如何确保插排接线的安全性?怎样判断接线是否正确?
手机辐射对人体的影响及防护方法(了解手机辐射的来源和危害,科学使用手机保护自己)
Safari iPhone如何强制加载桌面站点
军人退伍后有什么限制?有些事2年内不可做,不服从者会判刑
确保本金安全:投资合同的写作技巧与策略
教师科研成果与职称申请总结
目标管理的流程如何制定?
佳能70-200一代二代和三代区别
日本国土面积那么小,如何住得下1.25亿人?还家家住独栋别墅?
外网访问群晖NAS:Docker部署路由侠内网穿透完整教程
塑造人类精神数千年的六部宗教经典,读透任何一部都了不起!
对偶空间与对偶基的数学驾驭:从线性映射到齐次映射
揭秘硅光电二极管的特征及前沿应用前景
砍掉孩子的兴趣班,这些平替方案又好又省!
九位建筑师的开年推荐书目
无需训练,这个新方法实现了生成图像尺寸、分辨率自由
疫苗接种步骤有哪些?“三查七对一验证”是什么?这份流程请收好
女性焦虑症的成因与治疗方法
顺风车追尾货车致3死!失管失控细节披露→
中元节祭祖烧纸钱全攻略:时间、地点、仪式详解
热热热!抗癌治疗中发热怎么办?怎样才能尽快降温?
项目经理如何锻炼逻辑思维
讲透《逻辑学导论》:逻辑学的基本概念
瞳孔异色怎么回事,怎么办?
担心秋蚊子“反扑”,防蚊方法看过来
梅花树和紫薇树:两种观赏树木的栽培与文化价值
门禁磁力锁的工作原理与优势:一种高效、安全的电子锁具
什么是电荷?测试电荷量的方法