关于minio部署(docker)以及minio上传文件

概述:

        minio是开源文件存储系统,可以用来存储和检索大量的文件。它是一个轻量级的分布式存储服务。

讲解:

       对minio的简单了解之后,开始我们的正题。

1.部署

     首先要有一个minio.tar.gz镜像,直接在docker load -i  minio.tar.gz进去就可以,docker images查看此镜像

启动命令:

docker run  

    -p 9000:9000

    -p 9090:9090

    --name minio  

    -d --restart=always  

    -e MINIO_ACCESS_KEY=minio  

    -e MINIO_SECRET_KEY=minio@123  

    -v /usr/local/minio/data:/data  

    -v /usr/local/minio/config:/root/.minio   minio/minio:RELEASE.2023-03-09T23-16-13Z

    server /home/minio  --console-address ":9000" --address ":9090"

-p: 指定端口映射,格式为:主机端口:容器端口 (这里注意要映射两个,否则API会访问不到)

-e “MINIO_ROOT_USER=vinci” minio用户名;
-e MINIO_SECRET_KEY=123456 minio 密码
-d: 后台运行容器,并返回容器ID;
-v: 绑定一个卷

然后,就可以docker ps -a查看容器列表发现minio服务启动了

查看minio容器的日志docker logs -f ID号,出现这种的基本上没什么问题了,已经成功了

可以进行访问了(账号密码是你启动minio容器设置的账号密码)

强调:

如果说出现加载不出来,有可能是你没有开放端口,记得开放一下端口

创建桶名称

2.minio客户端上传文件

依赖:

在application.properties中添加minio配置

minio.endpoint=http://ip:9090/

minio.bucket-name=librarytest(创建的桶名称)

minio.access-key=用户名

minio.secret-key=密码

测试minio文件上传

两种方式:

1.minioClient.uploadObject()

特点:

  • 提供更灵活的上传功能。
  • 使用 UploadObjectArgs 构建器类,可以设置更多参数,如存储桶名称、对象名称、文件路径等。
  • 支持更多的配置选项,适用于更复杂的上传用例。

2.minioClient.putObject()

特点:

  • 提供基本的文件上传功能。
  • 适合简单的上传用例。
  • 可以通过 PutObjectArgs 设置存储桶名称、对象名称、输入流等。

特别强调:

如果你依赖中包含okhttp3,一定要注意跟minio兼容性。要不然会报错

 //测试minio上传文件
    public static void main(String[] args) {
        String filetype = ".doc";
        String uuid = UUID.randomUUID() + "-00000";
        String fileName = uuid + "." + filetype;
        String endpoint = "http://ip:端口"; // MinIO 服务器的地址
        String accessKey = "minioadmin"; // MinIO 访问密钥
        String secretKey = "minioadmin"; // MinIO 秘密密钥

        try {
            // 创建 Minio 客户端
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(endpoint)
                    .credentials(accessKey, secretKey)
                    .build();

            // 指定要上传的文件和存储桶名称
            File file = new File("D://系统部署方案.doc");
            InputStream files = new FileInputStream(file);
            String bucketName = "librarytest";//改成你的桶名称
            boolean exists = minioClient.bucketExists((BucketExistsArgs)((BucketExistsArgs.Builder)BucketExistsArgs.builder().bucket(bucketName)).build());
            if(!exists)
                minioClient.makeBucket((MakeBucketArgs)((MakeBucketArgs.Builder)MakeBucketArgs.builder()
                        .bucket(bucketName))
                        .build());
            //第一种方式上传
//                minioClient.uploadObject(
//                        UploadObjectArgs.builder()
//                                .bucket(bucketName)
//                                .object(fileName)
//                                .filename(String.valueOf(file.toPath()))
//                                .contentType(filetype)
//                                .build()
//                );
            //第二种方式上传
            minioClient.putObject((PutObjectArgs)((PutObjectArgs.Builder)((PutObjectArgs.Builder)PutObjectArgs.builder()
                            .bucket(bucketName))
                            .object(fileName))
                            .stream(files,files.available(),-1L)
                            .contentType(filetype)
                            .build());
                System.out.println("上传成功!");
        }catch (Exception e){
            System.out.println("minio上传文件失败:"+e.getMessage());
        }
    }

上传成功之后,查看minio文件就可以了。

恭喜您,又学会了一项技能。加油!!!

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值