MinIO【部署 01】MinIO安装及SpringBoot集成简单测试

简介: MinIO【部署 01】MinIO安装及SpringBoot集成简单测试

1.下载安装

下载 https://min.io/download#/linux;

安装文档 https://min.io/docs/minio/linux/index.html。

1.1 Install the MinIO Server

# 指导安装方式
wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio-20230804174021.0.0.aarch64.rpm -O minio.rpm
sudo dnf install minio.rpm
# 实际安装
rpm -ivh minio-20230804174021.0.0.x86_64.rpm

1.2 Launch the MinIO Server

# 指导启动方式
mkdir ~/minio
minio server ~/minio --console-address :9090
# 实际启动
mkdir -p /home/minio/data
minio server /home/minio/data --console-address tcloud:9090
[root@tcloud data]# minio server /home/minio/data --console-address tcloud:9090
WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-08-04T17-40-21Z (go1.19.12 linux/amd64)
Status:         1 Online, 0 Offline.
S3-API: http://172.17.0.8:9000  http://172.18.0.1:9000  http://172.81.0.1:9000  http://172.20.240.0:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin
Console: http://tcloud:9090
RootUser: minioadmin
RootPass: minioadmin
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
   $ mc alias set myminio http://172.17.0.8:9000 minioadmin minioadmin
Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.
# 后台启动命令
nohup /usr/local/bin/minio server /home/minio/data --console-address tcloud:9090 > /home/minio/data/minio.log 2>&1 &
# 自定义账号密码后的启动
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=miniostorage
nohup /usr/local/bin/minio server  /home/minio/data --console-address tcloud:9090 > /home/minio/data/minio.log 2>&1 &

1.3 Connect Your Browser to the MinIO Server

工作台详细使用文档 https://min.io/docs/minio/linux/administration/minio-console.html#minio-console

登录页面:

登录成功:

2.SpringBoot集成

Java Quickstart Guide https://min.io/docs/minio/linux/developers/java/minio-java.html#minio-java-quickstart

Java SDK https://github.com/minio/minio-java/tree/release

2.1 依赖及配置

<!--当前的最新版本-->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.5</version>
</dependency>

Minio Console上生成的两个 Key:

{
    "accessKey": "SllF5SkIozb1n0b1D84M",
    "api": "s3v4",
    "path": "auto",
    "secretKey": "ZQSiCm3UDST1Q5lL1sImpOUNKIQSv6qZGucB4ku0",
    "url": "http://tcloud:9090/api/v1/service-account-credentials"
}

yml配置:

minio:
  url: http://tcloud:9000
  accessKey: SllF5SkIozb1n0b1D84M
  secretKey: ZQSiCm3UDST1Q5lL1sImpOUNKIQSv6qZGucB4ku0
  bucketName: tcloud-minio

2.2 代码

Minio配置类:

@Configuration
@ConfigurationProperties(prefix = "minio")
@Data
public class MinioConfig {
    private String url;
    private String accessKey;
    private String secretKey;
    private String bucketName;
}

Minio工具类:

@Slf4j
@Component
public class MinioUtil {
    private MinioClient minioClient;
    @Resource
    private FileSystemConfig fileSystemConfig;
    @Resource
    private MinioConfig minioConfig;
    private String bucketName;
    @PostConstruct
    private void connectToServer() {
        if (fileSystemConfig.isMinioEnable()) {
            // 初始化 MinioClient
            minioClient = MinioClient.builder()
                    .endpoint(minioConfig.getUrl())
                    .credentials(minioConfig.getAccessKey(), minioConfig.getSecretKey())
                    .build();
            // 检测 bucket 是否存在
            bucketName = minioConfig.getBucketName();
            bucketExists(bucketName);
        }
    }
    /**
     * 根据 bucketName 检测是否存在 不存在则创建
     *
     * @param bucketName 名称
     */
    public void bucketExists(String bucketName) {
        try {
            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            if (!found) {
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            }
        } catch (Exception e) {
            log.error("bucketExists Failed!");
            e.printStackTrace();
        }
    }
    public void fileUploader(String objectName, String filePath) {
        try {
            UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
                    .bucket(bucketName)
                    .object(objectName)
                    .filename(filePath)
                    .build();
            minioClient.uploadObject(uploadObjectArgs);
        } catch (Exception e) {
            log.error("fileUploader [{}] Failed!", filePath);
            e.printStackTrace();
        }
    }
    public void fileDownload(String objectName, String targetFilePath) {
        Path path = new File(targetFilePath).toPath();
        try {
            GetObjectArgs getObjectArgs = GetObjectArgs.builder()
                    .bucket(bucketName)
                    .object(objectName)
                    .build();
            InputStream stream = minioClient.getObject(getObjectArgs);
            Files.copy(stream, path, StandardCopyOption.REPLACE_EXISTING);
        } catch (Exception e) {
            log.error("fileDownload [{}] Failed!", targetFilePath);
            e.printStackTrace();
        }
    }
}

2.3 测试结果

查看Buckets信息:

查看对象信息:

目录
相关文章
|
2天前
|
存储 Java 文件存储
Spring Boot 3 整合 Minio 实现文件存储
本文介绍了如何使用 Spring Boot 3 整合 MinIO 实现文件存储服务。MinIO 是一款高性能的对象存储服务器,适合大规模数据存储与分析,支持多种部署环境且文档完备、开源免费。从 MinIO 的快速安装、配置文件公开访问,到 Spring Boot 中集成 MinIO 客户端的步骤,包括创建用户访问密钥、引入依赖包、添加配置信息、编写 MinIO 客户端配置类及上传和预览文件的服务代码。最后通过 Apifox 进行文件上传测试,并验证文件是否成功存储及预览功能是否正常。关注公众号“Harry技术”,回复 minio 获取源码地址。
112 76
|
3月前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
397 2
|
3月前
|
XML Java API
SpringBoot 整合 Minio
本文介绍了如何在服务器上安装并配置Minio服务,包括Minio的依赖、配置类以及基本操作。首先,通过Maven添加Minio依赖;接着,在`yml`文件中配置Minio的连接信息;然后,创建`MinIoClientConfig`类将MinioClient注入到Spring容器中;最后,定义`OSSFileService`接口及其实现类`OssFileServiceImpl`,实现文件上传、获取文件URL、临时访问URL和删除文件等操作。
104 2
|
5天前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
25 10
|
1月前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。
|
1月前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
|
2月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
60 4
|
3月前
|
XML Java Kotlin
springboot + minio + kkfile实现文件预览
本文介绍了如何在容器中安装和启动kkfileviewer,并通过Spring Boot集成MinIO实现文件上传与预览功能。首先,通过下载kkfileviewer源码并构建Docker镜像来部署文件预览服务。接着,在Spring Boot项目中添加MinIO依赖,配置MinIO客户端,并实现文件上传与获取预览链接的接口。最后,通过测试验证文件上传和预览功能的正确性。
176 4
springboot + minio + kkfile实现文件预览
|
2月前
|
存储 前端开发 JavaScript
|
2月前
|
存储 Java API