二维码
找好货

扫一扫关注

当前位置: 首页 » 资讯 » 专题 » 正文

centos-MinIO文件对象存储服务器(docker)安装和基本使用

放大字体  缩小字体 发布日期:2022-08-23 16:42:07    作者:life    浏览次数:671    评论:0
导读

每天分享(20220415)今天分享MinIO文件对象存储服务器docker单机版安装及springboot整合使用。 关注青锋-每天进步一点点,需要技术交流和项目沟通的朋友可以留言。 青锋产品开源地址:https://gitee.com/

每天分享(20220415)

今天分享MinIO文件对象存储服务器docker单机版安装及springboot整合使用。

关注青锋-每天进步一点点,需要技术交流和项目沟通的朋友可以留言。

青锋产品开源地址:https://gitee.com/msxy

MinIO简介

MinIO是一款高性能的对象存储容器,适合存储大量的非结构化数据,例如:图片、视频、Word等文件。此外,它还自带非常方便的可视化界面。

MinIOdocker安装
  • 拉取镜像

docker pull minio/minio

  • 创建并运行容器

docker run -it --name minio -p 9000:9000 -p 9001:9001 -d -v /usr/local/docker/minio/data:/data -v /usr/local/docker/minio/config:/root/.minio -e 'MINIO_ROOT_USER=admin' -e 'MINIO_ROOT_PASSWORD=admin123' minio/minio server /data --console-address ":9001"

查看容器日志

docker logs 容器id

9000:API调用端口
9001:控制台端口,不指定他会随机生成。注:控制台用9000也能打开,最终会跳转到9001,效果一样的

随后,在浏览器打开9000端口,分别输入上面的账号密码(账号:admin,密码:admin123),登录即可

创建Bucket

登录成功后,进入MinIO后台页面。

根据下图操作,创建Bucket,为了测试创建:test01的Bucket(桶)

springboot集成MinIO使用maven引用minio依赖

<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.0</version> <exclusions> <exclusion> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.8.1</version> </dependency> MinioUtil 创建操作类

建一个 MinioUtil 操作类,并实例化 MinioClient 对象

public class MinioUtil { private static MinioClient client; static { try { client = MinioClient.builder() .endpoint(new URL("http://121.5.104.63:9000")) .credentials("admin", "admin123") .build(); } catch (MalformedURLException e) { e.printStackTrace(); } } } MinioUtil 实现文件上传

public static ObjectWriteResponse upload(String bucket, String localFileName, String remoteFileName) throws Exception{ File file = new File(localFileName); FileInputStream fileInputStream = new FileInputStream(file); return client.putObject(PutObjectArgs.builder() .stream(fileInputStream, file.length(), PutObjectArgs.MIN_MULTIPART_SIZE) .object(remoteFileName) .bucket(bucket) .build()); } public static ObjectWriteResponse upload(String bucket, MultipartFile file, String remoteFileName) throws Exception { return client.putObject(PutObjectArgs.builder() .bucket(bucket) .stream(file.getInputStream(), file.getSize(), PutObjectArgs.MIN_MULTIPART_SIZE) .object(remoteFileName) .build()); } MinIO实现文件下载

修改 MinioUtil,增加 2 个下载方法,分别是下载到本地和浏览器打开下载

public static void downLocal(String bucket, String remoteFileName, String localFileName) throws Exception { client.downloadObject(DownloadObjectArgs.builder() .bucket(bucket) .object(remoteFileName) .filename(localFileName) .build()); } public static void downResponse(String bucket, String remoteFileName, HttpServletResponse response) throws Exception { GetObjectResponse object = client.getObject(GetObjectArgs.builder() .bucket(bucket) .object(remoteFileName) .build()); response.setHeader("Content-Disposition", "attachment;filename=" + remoteFileName.substring(remoteFileName.lastIndexOf("/")+1)); response.setContentType("application/force-download"); response.setCharacterEncoding("UTF-8"); IOUtils.copy(object, response.getOutputStream()); } 创建 MinioController

@RestController @RequestMapping("/minio") public class MinioController { @GetMapping("/uploadLocalFile") public String uploadLocalFile() throws Exception{ ObjectWriteResponse resp = MinioUtil.upload("test01", "E:测试文件.txt", getDatePath()+"test.txt"); return "上传成功"; } @PostMapping("/uploadMultipartFile") public String uploadMultipartFile(MultipartFile file) throws Exception { ObjectWriteResponse resp = MinioUtil.upload("test01", file, getDatePath() + file.getOriginalFilename()); return "上传成功"; } @PostMapping("/downLocal") public String downLocal() throws Exception { MinioUtil.downLocal("test01", "/2022/4/15/test.txt", "test.txt"); return "下载成功"; } @GetMapping("/downResponse") public void downResponse(HttpServletResponse response) throws Exception { MinioUtil.downResponse("test01", "/2022/4/15/test.txt", response); } private String getDatePath(){ LocalDateTime now = LocalDateTime.now(); return String.format("/%s/%s/%s/", now.getYear(), now.getMonthValue(), now.getDayOfMonth()); } }

执行完毕后,在 test01 这个 bucket 底下,会创建 /2022/04/15/ 的目录,并且将文件上传到该目录下

设置永久下载地址

前面讲的例子是调用 Minio API 获取文件,从而实现下载功能。此外,minio 也允许通过文件地址直接下载。

打开 Bucket,点击 Manage 进行设置管理

点击这里的 Private,把它改成 Public

以这个文件为例,下载地址就是 http://121.5.104.63:9000/test01/2022/4/15/test.txt,直接从浏览器打开就可以测试。

 
关键词: 服务器存储
(文/life)
打赏
免责声明
• 
本文为life原创作品,作者: life。欢迎转载,转载请注明原文出处:https://www.114618.com/news/149405.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
0相关评论
 

(c)2008-2018 找好货 B2B SYSTEM All Rights Reserved

京ICP备2022008976号-2