目录
一、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基本概念
- bucket(桶) :类似文件系统的目录(文件夹);
- Object : 类似文件系统的文件;
- Keys :类似文件名;
- MINIO_ACCESS_KEY:访问key,类似账号;
- 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