概述:这种东西,多写点,方便以后自己使用
第一步: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-key
和
your-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和123456789 MINIO_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控制页面
上传成功。
版权归原作者 nanshaws 所有, 如有侵权,请联系我们删除。