OSS (Object Storage Service)对象存储服务主要是用于文件存储与读取。本文前提是了解阿里云OSS是什么,不了解的可以自行搜索了解。像华为云、百度云等也都有同样的云服务,只是名称会略有差别。

而我们通常可以使用Minio私有化部署一套有着同样的核心功能的应用系统。

安装服务

# 拉取镜像
docker pull bitnami/minio
# 创建目录
mkdir -p /mydata/minio
# 启动应用,9000端口为资源访问,9001为后台管理,密码中含有!特殊字符所以使用单引号
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e "MINIO_SERVER_URL=http://服务器公网IP:9001" -v /mydata/minio/data:/data -e MINIO_ROOT_USER="登录用的账号" -e MINIO_ROOT_PASSWORD='长度至少8位的密码' bitnami/minio

注: -e "MINIO_SERVER_URL=http://服务器公网IP:9001"

这里的 MINIO_SERVER_URL 参数用于更改在分享文件时展示的默认文件地址,启动服务时可以直接配置成服务器公网IP或者代理的域名,不配置将默认显示容器内部IP地址如:http://172.17.0.3:9001/…(具体展示可参考下文)

初始化

Bucket

通过Bucket可实现上传文件并在web等中进行使用。

1.开放服务器9001端口或者使用nginx代理使得可使用浏览器进行访问。

2.浏览器访问后输入docker启动命令中的用户名和密码。

3.登录后创建一个bucket,我这里创建一个test的bucket。

image-wnsp.png

4.然后可以上传一张图片并获取直接访问的链接用于其他应用页面展示。

5.上传后点击文件后方的分享即可获取到文件完整url。下图为启动时未设置MINIO_SERVER_URL参数情况时的展示,如果设置过就会展示设置过的。

注意:此时该链接是临时链接,且不能直接手动拼接文件url进行访问(即去掉上方完整url的?及之后参数的url),出现该问题原因是bucket默认是私有的,可通过调整访问权限为public解决。

accessKey

通过accessKey可实现在Java等后端中上传。

1.创建一个供后端使用的用户,权限这里选择readwrite或者更大的权限。

2.然后可以参考minio文档完成后端开发实现文件上传。

Q.E.D.