Docker安装Minio和使用


MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

使用Minio搭建文件服务器,相比FASTDFS的搭建,使用Minio搭建文件服务器更方便快捷些。下面我们基于docker来安装minio,记得先安装docker。

拉取镜像

docker pull minio/minio

启动容器

docker run -d -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" -v /mnt/data:/data -v /mnt/config:/root/.minio minio/minio server /data

MINIO_ACCESS_KEY是账号;MINIO_SECRET_KEY是密码(最少8位,不能太简单,否则会启动失败),一会网页登陆需要。 /mnt/data 是映射目录。

访问http://192.168.0.1:9000 即可进入:

可以通过sdk进行文件的上传,官方提供支持js、Java、python等的sdk,操作非常方便。

配置nginx(非必需, 配置后可以通过域名访问)

server{
listen 80;
server_name image.demo.com;
location /{
    proxy_set_header Host $http_host;
    proxy_pass http://localhost:9000;
}
location ~ /\.ht {
    deny  all;
}

}

使用Java的sdk上传文件

添加依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>3.0.10</version>
</dependency>

java代码实现

try{
    // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
    MinioClient minioClient = new MinioClient("http://192.168.56.102:9000", "admin", "admin123456");
    
    // 检查存储桶是否已经存在
    boolean isExist = minioClient.bucketExists("images");
    if(isExist) {
        System.out.println("Bucket already exists.");
    } else {
        // 创建一个名为images的存储桶,用于存储照片
        minioClient.makeBucket("images");
    }
    // 使用putObject上传一个文件到存储桶中。
    minioClient.putObject("images", "20210317001.png", "C:\\Users\\Administrator\\Downloads\\minio.png");

}catch (Exception e){
    e.printStackTrace();
}

解决minio的访问链接的有时间限制的问题,即实现永久访问链接

我们上传文件到Bucket里面后,选择文件后面的分享按钮时,必须有文件有效期;为了实现minio链接能够永久有效,我们需要选择Bucket设置相关的读写权限(比如readOnly等)

这样就可以直接访问了,访问链接就不用直接加minio了,只需要使用对应目录即可如:http://192.168.56.102:9000/images/20210317001.png

这样一个类似于阿里云这些云服务商提供的OOS对象存储功能就实现了。


特别提醒:扫码关注微信订阅号'起岸星辰',实时掌握IT业界技术资讯! 转载请保留原文中的链接!
 上一篇
2021年3月资讯(三) 2021年3月资讯(三)
2021春央视315头四炮打向互联网;重磅:Spring 发布 Spring Native Beta;欧洲最大云服务公司 OVH 法国机房着火;JDK/Java 16 正式 GA; IBM 更新量子编程工具;为什么说月球比地球更圆?
2021-03-19
下一篇 
spring-cloud-alibaba之sentinel spring-cloud-alibaba之sentinel
微服务spring-cloud-alibaba套件sentinel实现服务的熔断限流,增强微服务集群的稳定性,替换原有的Hystrix
2021-03-16
  目录