Skip to content

SpringBoot整合MinIO

MioIO官网:https://min.io/

一、Docker部署

1. 拉取镜像

shell
docker pull minio/minio

2. 创建本地目录

shell
mkdir -p  /Users/a11236/Tools/minio/data
mkdir -p  /Users/a11236/Tools/minio/config

3. 创建容器并运行

shell
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
--restart=always \
--privileged=true \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-v /Users/a11236/Tools/minio/data:/data \
-v /Users/a11236/Tools/minio/config:/root/.minio \
minio/minio \
server /data  \
--console-address ":9001" -address ":9000"

说明:

docker run: 运行一个新的容器。

-d: 在后台运行容器。

-p 9000:9000 -p 9001:9001: 将容器的端口9000和9001映射到主机的9000和9001端口,这样可以通过主机的这两个端口来访问MinIO服务和MinIO Web界面。

--name=minio: 为容器指定一个名称为"minio",方便后续操作时使用。

--restart=always: 设置容器在启动后总是自动重启,以确保MinIO服务始终可用。

--privileged=true: 启用特权模式,允许容器内部的进程拥有访问主机内核的权限。

-e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456": 设置MinIO的根用户的用户名和密码。在这里,用户名为"admin",密码为"admin123456"。

-v /Users/a11236/Tools/minio/data:/data -v /Users/a11236/Tools/minio/config:/root/.minio: 将主机上的两个目录挂载到容器内部。/xx/data用于存储MinIO的数据,/xx/config用于存储MinIO的配置信息。

minio/minio: 指定要使用的MinIO镜像。

server /data: 指定MinIO的数据存储路径为/data。

--console-address ":9001" --address ":9000": 设置MinIO的控制台地址为":9001",即可以通过主机的9001端口访问MinIO的Web控制台;同时设置MinIO的服务地址为":9000",即MinIO服务将在主机的9000端口监听。

4. 登录minio控制台

在这里插入图片描述

5. 创建Bucket存储桶

创建存储桶test。

在这里插入图片描述

修改访问权限。

在这里插入图片描述

6. 上传文件

在这里插入图片描述

7. 访问测试

在这里插入图片描述

二、SpringBoot整合

1. 创建Access Key

在这里插入图片描述

2. maven依赖

xml
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.1.0</version>
</dependency>

3. 上传测试

java
try {
    MinioClient minioClient = MinioClient.builder()
            .endpoint("http://127.0.0.1:9000")
            .credentials("w2wMctUSXl9FHIrtXnmd", "xYMzprRXu7OjyRxH5MvnKqsjjDoEC5E8cvw0hv1u")
            .build();

    minioClient.uploadObject(
            UploadObjectArgs.builder()
                    .bucket("test")
                    .object("test.jpg")
                    .filename("/Users/a11236/test.jpg")
                    .build());
} catch (Exception e) {
    e.printStackTrace();
}