Minio安装与集成

1 Minio介绍

MinIO是一个高性能、开源的对象存储服务,专为云原生和容器化环境设计。它是Amazon S3协议的兼容实现,意味着它可以无缝集成到现有的S3生态系统中,为用户提供了一个强大且灵活的存储解决方案,官网链接如下:MinIO | S3 & Kubernetes Native Object Storage for AI。简而言之,使用Minio可以能方便对系统文件进行管理。下面来介绍如何安装Minio。

2 docker下安装Minio

官网介绍了5种安装方式,本文使用docker来安装Minio,如何安装docker网上文章比比皆是,本文不再赘述。

2.1 安装

直接运行

# 下载最新的minio镜像
docker pull minio/minio

# 创建挂载目录
mkdir -p ~/minio/data

# 运行minio镜像
docker run -d \ # 设置后台运行
    -p 9000:9000 -p 9090:9090 \ # 暴露9000端口用于访问api,暴露9090端口用于访问控制台
    --name minio \ # 设置容器名称
    --restart=always \ # 设置开启自启
    -e "MINIO_ACCESS_KEY=minio" \ # 设置账户
    -e "MINIO_SECRET_KEY=minio" \ # 设置密码,线上环境注意更改
    -v ~/minio/data:/data \ # 挂载数据
    minio/minio server \
    /data --console-address ":9090" -address ":9000"

使用docker compose编排

minio:
    image: minio/minio
    container_name: minio
    restart: always
    environment:
      - MINIO_ACCESS_KEY=minio
      - MINIO_SECRET_KEY=minio
    volumes:
      - ~/minio/data:/data
    ports:
      - "9000:9000"
      - "9090:9090"
    command: server /data --console-address ":9090" --address ":9000"
    networks: # 指定网络
      - test-net

2.2 测试

访问http://192.168.52.128:9090/login页面,使用设定的账户密码登录来测试是否部署成功(url注意修改为自己的),看见以下页面代表成功(页面可能会变化)。

3 简单使用控制台

使用前需要介绍下Minio一些基础的概念。

  • Bucket(桶):简单理解为文件夹,存储Object对象
  • Object(对象):简单理解为文件

3.1 创建Bucket

bucket名称随意,其他默认即可,点击创建

创建后控制台页面就会显示刚刚创建的bucket,如下所示

3.2 上传文件

点击Object Browser,再点击刚刚创建的bucket

点击上传文件

3.3 bucket权限

bucket权限有三种

  • private:私有,只有bucket的创建者有权限对其进行操作
  • public:公开,所有人不需要验证就能对其进行操作,不推荐
  • custom:自定义,使用json格式,参考访问管理

设置为public后,所有人都可以访问该桶的资源,包括桶内的文件内容和文件目录。 设置private后,所有人都无法直接访问该桶的资源,如果外部需要访问,只能通过外链(最长有效期7天)。

以下列资源为例,设置public后通过该url访问资源:http://192.168.52.128:9000/test/750446.png

那么,是否可以既不暴露桶中所有资源,又能永久访问(不通过外链形式)呢?答案是可以的,需要使用custom自定义。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "s3:GetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Resource": "arn:aws:s3:::test/*" // 注意test为当前bucket的名称
        }
    ]
}

4 SpringBoot集成Minio

4.1 添加依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.10</version>
</dependency>

4.2 将MinioClient交给容器管理

package com.example.config;

import io.minio.MinioClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public MinioClient minioClient() {
       return MinioClient.builder()
             // 设置服务运行的地址
             .endpoint("http://192.168.52.128:9000")
             // 设置账号名和密码
             .credentials(账号, 密码)
             .build();
    }
}

4.3 测试

@SpringBootTest
class ApplicationTests {
    @Autowired
    private MinioClient minioClient;

    @Test
    void contextLoads() throws Exception {
       //判断test桶是否存在
       boolean b = minioClient.bucketExists(BucketExistsArgs.builder()
             .bucket("test")
             .build());
       System.out.println(b);
    }
}

5 MinioClient

MinioClient能操作bucket和object,不存在线程安全问题

api参考以下

Java Client API Reference — MinIO中文文档 | MinIO Linux中文文档

作者:用户347531115143
链接:https://juejin.cn/post/7374055681890369571
本文转载于稀土掘金,如有侵权请联系删除
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值