简单使用docker搭建minIO文件管理系统
在学习项目的时候要用到文件上传系统,不过在学习搭建fastdfs+nginx所要花费的时间特别多,而且其中要是出错了就很容易导致整个部署要重装,对于我这种linux的小白来说不是很友好
那么这里呢,就推荐大家使用minIO来替代一下fastdfs,minIO也支持分布式,并且使用起来 minIO会方便简单,而且minIO自带的ui界面管理 也很人性化
官方文档:http://docs.minio.org.cn/docs/ 大佬可以看官方文档比较详细
由于这里搭建MinIO是基于docker,所以在开始的时候,小伙伴们需要先在linux系统安装好docker
在linux面板上输入命令docker pull minio/minio
输入显示安装完毕之后 输入docker images
这里就会有minio的显示 我使用的是阿里云的服务器 所以这个需要到服务器里面的安全组设置开通9000端口。这里要注意一下可能会和php某框架端口冲突。
这里呢? 我们只输入以下命令复制输入 即可启动minIO了 是不是很简单
docker run -p 9000:9000 --name minio1
-e “MINIO_ACCESS_KEY=xxxxxx” \ 这里是后台管理的账号
-e “MINIO_SECRET_KEY=xxxxxx” \ 这里是后台管理的密码
-v /mnt/data:/data
-v /mnt/config:/root/.minio
minio/minio server /data
这里的–name 就是定义创建一个容器 代码运行完毕后 就会显示一个容器 这个容器已经创建好了
创建好容器之后 我们用命令docker start <container_id> 启动容器即可
这时候打开网址http://服务器地址:9000/minio/login
输入前面定义好的账号密码即可 登录进去我们先创建一个bucket
官方点的说法就是bucket 通俗的说法就是文件夹 创建完之后 设置好访问路径,我这里创建的是face是用来保存头像的 但是我们要访问头像就要设置访问权限了
点击设置
prefix前缀我们设置成* 代表都可以访问 权限设置只读 设置好之后只要设置
http://服务器地址:9000/文件夹名字/文件全名 这样就可以访问了 效果如下
由于我是使用java语言 这样简单说一下java怎么实现上传照片的功能
前端base64传进来就需要转成multiplepartfile类型 进行上传
本地上传图片只需要填写本地图片地址即可
首先呢,在maven添加依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.10</version>
</dependency>
以下是简单封装的代码,调用imgUpload方法即可上传文件
base64就需要转类型 我这里就不演示了
public class MinioUtils {
private MinioClient minioClient;
private String serverAdress;
public MinioUtils(String serverAdress,String name,String password) throws InvalidPortException, InvalidEndpointException {
this.serverAdress=serverAdress;
minioClient = new MinioClient(serverAdress, name, password);
}
public String imgUpload(String imgName, String filePath) throws IOException {
try {
minioClient.putObject("文件夹名称",imgName+".png", filePath);
return serverAdress+"/文件夹名称/"+imgName+".png";
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}