docker安装minio

minio介绍

minio是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3 接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

安装

查看最新版本的minio镜像

docker search minio

命令拉取minio镜像(后面不跟版本,默认是最新版本镜像)

docker pull minio/minio

创建并启动minio容器

docker run -d -p 9091:9091 -p 9092:9092 --name minio \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/admin/minio/data:/data \
-v /home/admin/minio/config:/root/.minio \
minio/minio server /data \
--console-address ":9091" --address ":9092"

以上命令,在最新版本下的docker里面直接运行即可;
MINIO_ACCESS_KEY是登录的用户名,MINIO_SECRET_KEY是登陆的密码,根据自己的情况来设置登录的用户名和密码,
9000端口是对应控制台也就是图形化界面的访问端口;
9098是api访问端口,用于访问照片和sdk上传下载图片,如后续要使用springboot+minio上传图片

如果要设置容器自启在 run命令后加上 “–restart=always ”

docker run --restart=always -d -p 9000:9000 -p 9098:9098 --name minio \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/admin/minio/data:/data \
-v /home/admin/minio/config:/root/.minio \
minio/minio server /data \
--console-address ":9000" --address ":9098"

springboot整合minio

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.1.0</version>
</dependency>
import cn.hutool.core.lang.UUID;
import io.minio.BucketExistsArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author zzx
 * @since 2022/12/25
 */
public class MinioUtil {
    /** 服务地址 */
    private static String url = "*";";
    /** 用户名-可视化界面申请的用户名 */
    private static String accessKey = "*************";
    /** 密码-可视化界面申请的秘钥 */
    private static String secretKey = "***********************";
    /** 存储桶名称 */
    private static String bucketName = "****";
    private static MinioClient client = MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();

    /**
     * @param file 上传的文件
     * @return 访问地址
     */
    public static String uploadFile(MultipartFile file) throws Exception {
        String fileName = uuidFileName(file);  //对文件名进行编码
        PutObjectArgs args = PutObjectArgs.builder()
                .bucket(bucketName)   //储存桶名称
                .object(fileName)   //文件路径加文件名
                .stream(file.getInputStream(), file.getSize(), -1)
                .contentType(file.getContentType())
                .build();
        client.putObject(args);  //上传文件
        //返回上传的路径
        return url + "/" + bucketName + "/" + fileName;
    }

    /**
     * 判断桶是否存在
     * @param bucketName 桶名称
     * @throws Exception
     */
    public static boolean bucketExists(String bucketName) throws Exception {
        return client.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
    }

    /**
     * 获取一个新的文件名
     */
    private static String uuidFileName(MultipartFile file){
        //获取文件名称  a.txt.jpg
        String filename = file.getOriginalFilename();
        //得到一个uuid随机的字符串
        String uuid = UUID.randomUUID().toString();
        //uuid和文件的后缀名称拼接得到一个新的文件名称  aaaaa.jpg
        String newFileName = uuid+filename.substring(filename.lastIndexOf("."));
        //uuid和文件的后缀名称拼接得到一个新的文件名称
        return newFileName;
    }

}

应用

@PostMapping("/testUpload")
public AjaxResult testUpload(@RequestParam("file")MultipartFile file){
    try{
        String s = MinioUtil.uploadFile(file);
        return AjaxResult.success(s);
    }catch (Throwable e){
        StaticLog.error(e);
        throw new GlobalException();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽泽泽json

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值