概述:这种东西,多写点,方便以后自己使用
目录
第一步:docker安装配置minio
第一步:拉取镜像
第二步:创建用于存储MinIO数据的卷
如果是最新版minio直接就使用最后的那个命令创建容器
第三步:运行MinIO Docker容器
注意
所以:真正的代码如下
第五步:访问minioWeb
第六步:登录
注意:倘若使用低版本去调用高版本的minio,可能还是要设置MINIO_ACCESS_KEY和MINIO_SECRET_KEY的
创建一个buckets
第二步:springboot整合minio
第三步:编写前端进行测试
docker pull minio/minio
MinIO需要一个用于持久化存储的卷。创建一个目录,并使用docker volume create命令创建一个Docker卷:
mkdir ~/minio-storage # 在用户主目录下创建一个用于存储的目录 docker volume create minio-data # 创建一个名为minio-data的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"
通过浏览器访问 http://localhost:40753
可以看到非常的帅气
输入之前设置好的 root 和 123456789
这里就成功的部署完毕了。
完美命令如下:
这里为了方便,我设置一样的,都是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"
比如说这里我就创建了一个叫user01的bucket
首先,在pom.xml文件中添加MinIO的依赖:
io.minio minio8.3.6
在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
前端代码
文件上传 文件上传
上传成功,查看minio控制页面
上传成功。