springboot整合最新版minio和minio的安装(完整教程,新人必看)

概述:这种东西,多写点,方便以后自己使用

目录

第一步:docker安装配置minio

第一步:拉取镜像

第二步:创建用于存储MinIO数据的卷

如果是最新版minio直接就使用最后的那个命令创建容器

[第三步:运行MinIO Docker容器](#第三步:运行MinIO Docker容器)

注意

所以:真正的代码如下

第五步:访问minioWeb

第六步:登录

注意:倘若使用低版本去调用高版本的minio,可能还是要设置MINIO_ACCESS_KEY和MINIO_SECRET_KEY的

创建一个buckets

第二步:springboot整合minio

第三步:编写前端进行测试


第一步:docker安装配置minio

第一步:拉取镜像

复制代码
docker pull minio/minio

第二步:创建用于存储MinIO数据的卷

MinIO需要一个用于持久化存储的卷。创建一个目录,并使用docker volume create命令创建一个Docker卷:

复制代码
mkdir ~/minio-storage  # 在用户主目录下创建一个用于存储的目录
docker volume create minio-data  # 创建一个名为minio-data的Docker卷

如果是最新版minio直接就使用最后的那个命令创建容器

下面是老版的操作

第三步:运行MinIO Docker容器

复制代码
docker run -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=your-access-key" -e "MINIO_SECRET_KEY=your-secret-key" -v minio-data:/data minio/minio server /data

替换your-access-keyyour-secret-key为您选择的自定义访问密钥和秘密密钥。

注意: Access key length should be at least 3, and secret key length at least 8 characters

就是your-access-key必须大于3,your-secret-key必须大于8

比如说,我要自定义 your-access-key为123456 和 your-secret-key为123456789

复制代码
docker run -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=123456" -e "MINIO_SECRET_KEY=123456789" -v minio-data:/data minio/minio server /data

这样是可以运行的,但MINIO_ACCESS_KEY和MINIO_SECRET_KEY已经被弃用,建议使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD。同时,控制台端点正在监听一个动态端口(40753),建议使用--console-address ":PORT"来选择一个静态端口。

注意

新版mino是这样的。

API: http://172.17.0.3:9000 http://127.0.0.1:9000 api是9000端口 Console: http://172.17.0.3:40753 http://127.0.0.1:40753 console是40753端口 Documentation: https://docs.min.io

所以:真正的代码如下

比如说,我要自定义 MINIO_ROOT_USER为root 和 MINIO_ROOT_PASSWORD为123456789

复制代码
docker run -p 9000:9000 -p 40753:40753 --name minio ? -e "MINIO_ROOT_USER=root" ? -e "MINIO_ROOT_PASSWORD=123456789" ? -v minio-data:/data ? minio/minio server /data --console-address ":40753"

第五步:访问minioWeb

通过浏览器访问 http://localhost:40753

可以看到非常的帅气

第六步:登录

输入之前设置好的 root 和 123456789

这里就成功的部署完毕了。

注意:倘若使用低版本去调用高版本的minio,可能还是要设置MINIO_ACCESS_KEY和MINIO_SECRET_KEY的

完美命令如下:

这里为了方便,我设置一样的,都是root和123456789MINIO_ACCESS_KEY是root,MINIO_SECRET_KEY也是123456789

复制代码
docker run -p 9000:9000 -p 40753:40753 --name minio   -e "MINIO_ROOT_USER=root"   -e "MINIO_ROOT_PASSWORD=123456789" -e "MINIO_ACCESS_KEY=root" -e "MINIO_SECRET_KEY=123456789"   -v minio-data:/data   minio/minio server /data --console-address ":40753"

创建一个buckets

比如说这里我就创建了一个叫user01的bucket

第二步:springboot整合minio

首先,在pom.xml文件中添加MinIO的依赖:

复制代码
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.6</version>
</dependency>

application.properties文件中配置MinIO的相关参数:

复制代码
minio.endpoint=http://localhost:9000
minio.access-key=YOUR_ACCESS_KEY
minio.secret-key=YOUR_SECRET_KEY
minio.bucket-name=your-bucket-name

由于我上面创建minio的时候已经设置好了,bucket-name=user01

复制代码
server.port=8080
minio.endpoint=http://localhost:9000
minio.access-key=root
minio.secret-key=123456789
minio.bucket-name=user01

创建一个MinioConfig类,用于加载MinIO的配置信息:

复制代码
package org.cyl.spaceutils.config;

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

@Configuration
public class MinioConfig {

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

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

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

    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(minioEndpoint)
                .credentials(minioAccessKey, minioSecretKey)
                .build();
    }
}

在编写一个controller类即可

复制代码
package org.cyl.spaceutils.controller;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

@SpringBootApplication
@RestController
public class MinioDemoController {

    @Autowired
    private MinioClient minioClient;

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

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            InputStream inputStream = file.getInputStream();
            minioClient.putObject(
                    PutObjectArgs.builder()
                            .bucket(bucketName)
                            .object(file.getOriginalFilename())
                            .stream(inputStream, inputStream.available(), -1)
                            .contentType(file.getContentType())
                            .build()
            );
            return "File uploaded successfully!";
        } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            e.printStackTrace();
            return "Error uploading file to MinIO: " + e.getMessage();
        }
    }

}

现在,你可以运行这个Spring Boot应用,并通过/upload接口上传文件到MinIO。

修改一下tomcat上传文件的大小配置

复制代码
# 设置单个文件大小
spring.servlet.multipart.max-file-size= 50MB
# 设置单次请求文件的总大小
spring.servlet.multipart.max-request-size= 50MB

第三步:编写前端进行测试

前端代码

复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <button type="submit">上传</button>
    </form>
</body>
</html>

上传成功,查看minio控制页面

上传成功。

相关推荐
豆角焖肉11 分钟前
Maven进阶与搭建私服
java·maven
大不点wow22 分钟前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
止语Lab26 分钟前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活26 分钟前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了27 分钟前
Java中日期和字符串的处理
java·开发语言·日期
程序员天天困31 分钟前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn31 分钟前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull34 分钟前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai35 分钟前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
顺风尿一寸37 分钟前
记一次 Spring AOP 与定时任务引发的死锁排查
java