简介

  1. Golang语言实现
  2. 兼容亚马逊S3云存储服务接口,适合存储大量非结构化数据
  3. 官方文档:MinIO

Docker安装MinIO

  1. 创建并运行容器
docker run -d \
--name minio \
-p 9000:9000 \
--restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio/minio server /data
  • 用户名:minio
  • 密码:minio123
  1. 在浏览器输入http://192.168.140.102:9000/后即可看到minio控制台

操作MinIO

  1. 引入minio依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
  1. 操作minio
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("d:\\list.html");
// 获取minio的连接信息,创建minio的客户端
MinioClient minioClient = MinioClient.builder()
.credentials("minio", "minio123") // 凭证
.endpoint("http://192.168.140.102:9000") // 连接地址
.build();
// 上传
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object("list.html") // 文件名称
.contentType("text/html") // 文件类型
.bucket("leadnews") // 桶名称(与minio管理界面创建的桶一致)
.stream(fis, fis.available(), -1) // 流, 流有多大, -1表示所有相关的文件内容
.build();
minioClient.putObject(putObjectArgs);
// 访问路径
System.out.println("http://192.168.140.102:9000/leadnews/list.html"); // 访问路径 + 桶的名称 + 文件名称
}

封装MinIO为starter

【问题】:可能有不止一个微服务需要用到minio,如果在每个微服务都去集成minio会很麻烦。
【解决】:把文件微服务抽取出来,抽取minio变成一个文件微服务。