对象存储服务MinIO
1. Minio简介
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
- Simple Storage Service简单存储服务)
基本概念
- bucket – 类比于文件系统的目录
- Object – 类比文件系统的文件
- Keys – 类比文件名
官网文档:http://docs.minio.org.cn/docs/
2.快速入门
2.1 Docker安装minio
1.拉取镜像
docker pull minio/minio
2. 创建容器
docker run -p 9000:9000 --name minio -d --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
3.访问minio系统
http://http://192.168.200.130:9000
2. 2 创建工程,导入pom依赖
<dependencies>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
2.3 启动类
package com.heima.mino;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MinioApplication {
public static void main(String[] args) {
SpringApplication.run(MinioApplication.class, args);
}
}
2.4 创建测试类,上传html文件
package com.heima.test;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import java.io.FileInputStream;
/**
* minio快速入门
* 把磁盘上的list.html文件上传至minion,并且能够在浏览器访问
*/
public class MinioTest {
public static void main(String[] args) {
try {
//1.准备好要上传到minio的文件
FileInputStream fis = new FileInputStream("E:\\list.html");
//2.创建minio客户端,配置连接信息
MinioClient client = MinioClient.builder().credentials("minio", "minio123")//账号密码
.endpoint("http://192.168.1.0:9000")//minion地址
.build();
//3.上传
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object("list.html")//文件名称
.contentType("text/html")//文件类型
.bucket("leadnews")//桶名
.stream(fis, fis.available(), -1)
.build();
client.putObject(putObjectArgs);
//4.拼接访问地址
String url = "http://192.168.1.2:9000/leadnews/list.html";
System.out.println(url);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 封装MinIO为starter
3.1 创建heima-file-starter模块,导入依赖
<dependencies>
<dependency>