MinIO:一个基于Apache License v2.0开源协议的对象存储服务

MinIO Quickstart Guide--快速入门

  • MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
  • MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

Minio的安装[Docker]与使用

1.查询并下载镜像

docker search minio/minio

docker pull minio/minio [lastest] --最新版本

2.创建并启动容器--指定对应的AK 、Sk

  • Docker中运行MinIO单点模式:
    MinIO 需要一个持久卷来存储配置和应用数据。不过, 如果只是为了测试一下, 您可以通过简单地传递一个目录(在下面的示例中为/ data)启动MinIO。这个目录会在容器启动时在容器的文件系统中创建,不过所有的数据都会在容器退出时丢失。

      docker run -d -p 9000:9000 --name minio-service minio/minio server /data
  • 要创建具有永久存储的MinIO容器,您需要将本地持久目录从主机操作系统映射到虚拟配置~/.minio 并导出/data目录。 为此,请运行以下命令;

      docker run -p 9000:9000 --name minio-service -v /mnt/data:/data -v /mnt/config:/root/.minio  minio/minio  server /data
  • MinIO自定义Access和Secret密钥:要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为环境变量。 MinIO允许常规字符串作为Access和Secret密钥

      docker run -d -p 9000:9000 --name minio-service -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" minio/minio server /data
      

3.获取容器ID

在容器中使用Docker命令, 你需要知道这个容器的 容器ID 。 为了获取 Container ID, 运行

docker ps -a

-a flag 确保你获取所有的容器(创建的,正在运行的,退出的),然后从输出中识别Container ID

4.启动和停止容器

启动容器,你可以使用 docker start 命令。

docker start

停止一下正在运行的容器, 使用 docker stop 命令。

docker stop

5.MinIO容器日志

获取MinIO日志,使用 docker logs 命令。

docker logs

6.监控MinioDocker容器

监控MinIO容器使用的资源,使用 docker stats 命令.

docker stats `

基于java语言的客户端集成(实例)

1.引入对应的依赖

       
            io.minio
            minio
            3.0.10
        

2.配置minio的相关配置[.yml]

minio:
  access-key: AKIAIOSFODNN7EXAMPLE
  secret-key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  bucket-name: test
  endpoint: http://127.0.0.1:9000

3.编写minio的工具类

@Component
@Slf4j
public class MinioClientUtils {

    @Value("${minio.access-key}")
    private String accessKey;

    @Value("${minio.secret-key}")
    private String secretKey;

    @Value("${minio.bucket-name}")
    private String bucketName;

    @Value("${minio.endpoint}")
    private String endpoint;

    private MinioClient minioClient;

    /**
     * 上传内容类型
     */
    private static final String CONTENT_TYPE = "application/octet-stream";

    @PostConstruct
    public void init() {
        log.info("---初始化minio客户端---");
        try {
            // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
            minioClient = new MinioClient(endpoint, accessKey, secretKey);
        } catch (Exception e) {
            log.error("---初始化minio客户端异常,message={}---", e.getMessage());
        }
    }

    /**
     * 上传文件到minio
     *
     * @param fileName    保存文件名
     * @param inputStream 文件字节流
     */
    public ResponseResult putFileToMinio(String fileName, InputStream inputStream) {
        try {
            // 检查存储桶是否已经存在,不存在创建存储桶
            if (!minioClient.bucketExists(bucketName)) {
                minioClient.makeBucket(bucketName);
                //修改bucketName读写权限
                minioClient.setBucketPolicy(bucketName, "*", PolicyType.READ_WRITE);
            }
            // 使用putObject上传一个文件到存储桶中。
            minioClient.putObject(bucketName, fileName, inputStream, CONTENT_TYPE);
            //获取url
            String objectUrl = minioClient.getObjectUrl(bucketName, fileName);
            log.info("---成功上传文件到Minio,objectUrl={} ---", objectUrl);
            return ResponseResult.success(objectUrl);
        } catch (Exception e) {
            log.error("---上传文件到Minio异常,message={}---", e.getMessage());
            return ResponseResult.fail("上传文件到Minio异常");
        }
    }

}

4.测试结果实例

MinIO:一个基于Apache License v2.0开源协议的对象存储服务_第1张图片

你可能感兴趣的:(java,springboot,后端)