构建spring boot web项目:七、集成minio

目录

一、docker安装minio

二、springboot整合minio

2.1minio准备

2.1.1配置 ACCESS KEYS 获取

2.1.2新建桶,用来存放文件的位置

2.2 创建minio模块

2.3 引入依赖

2.4配置minio

三、管理应用模块(management)集成minio

四、启动时报错

一、docker安装minio

1.1拉取镜像

docker pull minio/minio 

1.2创建挂载目录

mkdir -p /home/minio/config
mkdir -p /home/minio/data

1.3启动容器

docker run -p 9000:9000 -p 9090:9090 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" -v /home/minio/data:/data -v /home/minio/config:/root/.minio  minio/minio server /data --console-address ":9090" -address ":9000"
命令 描述
-d --restart=always 这是运行容器的其他选项,-d使容器在后台运行,–restart=always表示容器总是会在退出后自动重启
-e “MINIO_ACCESS_KEY=minioadmin” 用户名
-e “MINIO_SECRET_KEY=minioadmin” 密码

minio/minio server <br/>/data --console-address ":9090" -address ":9000    

这是容器内要运行的命令,启动一个名为 “minio” 的服务器,数据存储在 /data 目录下,服务器的控制台地址为 “:9090”,服务地址为 “:9000”

查看容器

访问操作
http://ip:9090/login  账号:minioadmin 密码:minioadmin

二、springboot整合minio

minio基本概念

  1. bucket(桶) :类似文件系统的目录(文件夹);
  2. Object : 类似文件系统的文件;
  3. Keys :类似文件名;
  4. MINIO_ACCESS_KEY:访问key,类似账号;
  5. MINIO_SECRET_KEY:秘钥,类似密码。

2.1minio准备

2.1.1配置 ACCESS KEYS 获取

新建用户

2.1.2新建桶,用来存放文件的位置

2.2 创建minio模块

2.3 引入依赖

pom.xml(minio)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.lyj.initMode</groupId>
        <artifactId>initMode-function</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>initMode-function-minio</artifactId>

    <description>minio功能模块</description>

    <dependencies>
        <!--文件存储minio-->
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
        </dependency>
        <dependency>
            <groupId>com.lyj.initMode</groupId>
            <artifactId>initMode-function-mysql</artifactId>
        </dependency>
    </dependencies>

</project>

pom.xml(initMode)


        <!--minio 文件服务器-->
        <minio.version>7.1.0</minio.version>


            <dependency>
                <groupId>com.lyj.initMode</groupId>
                <artifactId>initMode-function-minio</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>${minio.version}</version>
            </dependency>

pom.xml(function)

<module>minio</module>

2.4配置minio

MinioConfig.java
package com.lyj.function.minio.config;

import com.lyj.common.base.enums.ErrorCodeEnum;
import com.lyj.common.base.util.BizExceptionUtil;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.errors.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * minio配置类
 * @author faminefree
 */
@Slf4j
@Configuration
@EnableConfigurationProperties({com.lyj.function.minio.config.MinioProperties.class})
public class MinioConfig {

    @Bean
    public MinioClient minioClient(MinioProperties properties) {
        // 创建一个Minio的客户端对象
        MinioClient client = MinioClient.builder()
                .endpoint(properties.getEndpoint())
                .credentials(properties.getAccessKey(), properties.getSecretKey())
                .build();
        //创建一个Minio的存储桶
        BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder()
                .bucket(properties.getBucketName())
                .build();
        //判断桶是否存在
        try {
            if (!client.bucketExists(bucketExistsArgs)) {
                // 如果不存在,那么此时就创建一个新的桶
                MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder()
                        .bucket(properties.getBucketName()).build();
                client.makeBucket(makeBucketArgs);
            }
        } catch (ErrorResponseException | InsufficientDataException | InternalException | InvalidBucketNameException
                | InvalidKeyException | InvalidResponseException | IOException | NoSuchAlgorithmException
                | ServerException | XmlParserException | RegionConflictException e) {
            log.error(ErrorCodeEnum.MINIO_CONNECT_ERROR.getMessage(),e);
            BizExceptionUtil.bizException(ErrorCodeEnum.MINIO_CONNECT_ERROR);
        }
        return client;
    }
}
MinioProperties.java
package com.lyj.function.minio.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * minio配置属性类
 */
@Data
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {

    /**
     * 对象存储服务的URL
     * <pre>
     *     Examples:
     *         * https://s3.amazonaws.com
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值