睿哝 发表于 2025-11-11 22:50:00

使用 Docker 快速部署 MinIO 文件存储服务

使用 Docker 快速部署 MinIO 文件存储服务

在日常开发中,文件管理(如图片、视频、日志、数据集等)常面临分散存储、安全性低、运维复杂等问题,传统文件存储方式易引发上传漏洞等风险。MinIO 作为一款高性能、轻量级的对象存储服务,兼容 Amazon S3 协议,可集中管理分散对象,减少暴露面并降低运维成本,是解决文件存储痛点的理想选择。
快速部署 MinIO(Docker 方式)

1. 拉取 MinIO 镜像

推荐使用指定稳定版本镜像(避免 latest 版本的兼容性问题):
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z版本号格式为 RELEASE.年-月-日T时-分-秒Z,可在 MinIO 官方镜像仓库 选择最新稳定版。
2. 启动 MinIO 容器

通过以下命令启动容器,实现数据持久化并映射端口:
docker run -d \
--name minio-server \
-p 9000:9000 \# S3 兼容 API 端口(程序访问用)
-p 9001:9001 \# 管理控制台端口(Web 访问用)
-v /home/admin/minio/data:/data \# 挂载数据目录(持久化存储)
-e "MINIO_ROOT_USER=adm1n" \# 控制台登录用户名
-e "MINIO_ROOT_PASSWORD=202019.Lvjin" \# 控制台登录密码(生产环境建议复杂度更高)
minio/minio server /data --console-address ":9001"# 指定控制台监听端口参数说明:


[*]-d:后台运行容器;
[*]--name:指定容器名称(便于后续管理);
[*]-p 9000:9000:MinIO 的 S3 协议 API 端口,供程序(如客户端、编辑器)调用;
[*]-p 9001:9001:Web 管理控制台端口,用于可视化操作(如创建桶、管理凭证);
[*]-v:将宿主机目录 /home/admin/minio/data 挂载到容器内 /data,确保数据在容器重启后不丢失(需保证宿主机目录有读写权限);
[*]-e:设置环境变量,指定管理员账号密码(生产环境需避免明文暴露)。
3. 访问 MinIO 控制台

启动成功后,通过浏览器访问 http://服务器IP:9001,使用上述 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 登录:
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=68b856fbd3f8dd3ca35964cfd18e27a4
核心操作:创建存储桶与访问凭证

3.1 创建存储桶(图形化操作)

存储桶(Bucket)是 MinIO 中管理对象的基本单位,类似文件夹。以“微信 Markdown 编辑器图片存储”为例:

[*]登录控制台后,点击左侧菜单栏 Buckets → Create Bucket;
[*]输入桶名(如 wechat-markdown,需小写、无特殊字符);
[*]按需配置权限(如允许公开访问需开启 Public Access,否则默认私有);
[*]点击 Create Bucket 完成创建。
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=85199c08332eac6a076582bf948f1f50
3.2 生成访问凭证(Access Token)

程序(如编辑器)需通过访问凭证调用 MinIO API,步骤如下:

[*]控制台左侧菜单栏点击 Access Keys → Create access key;
[*]输入描述(如 wechat-markdown-token),点击 Create;
[*]生成后会自动下载 JSON 文件(包含 accessKey 和 secretKey),secretKey 仅此时可见,需妥善保存(丢失需重新创建)。
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=22ecd72c59904a3e128774f7acd6068f
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=c9fdff25780d12a4e81de57f893388b6
JSON 文件内容示例:
{
"url": "http://服务器IP:9000",// 注意:应为 S3 API 端口(9000),非控制台端口
"accessKey": "j1duKbN0DbWeoqwt0yEJ",// 访问密钥
"secretKey": "5Le9Q2kv4r53w8SuR5cVOVzTQT5OdMKDRASagBzz",// 密钥(仅首次可见)
"api": "s3v4",// 签名算法版本(推荐 s3v4)
"path": "auto"// 路径样式(auto 自动适配)
}微信 Markdown 编辑器配置

将 MinIO 配置到编辑器,实现图片直传存储桶:

[*]打开微信 Markdown 编辑器,找到“图床设置”→“S3 兼容存储”;
[*]按以下说明填写参数:

[*]Endpoint:MinIO 的 S3 API 地址(如 http://服务器IP:9000);
[*]Bucket:已创建的存储桶名(如 wechat-markdown);
[*]Access Key:JSON 文件中的 accessKey;
[*]Secret Key:JSON 文件中的 secretKey;
[*]其他参数保持默认(如 API 版本选 s3v4)。

http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=31f8db01675b3d67ad911c22fe1ef13d
测试:上传图片并验证


[*]在编辑器中插入图片,选择“上传到图床”;
[*]上传成功后,图片会自动存储到 MinIO 对应桶中:
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=8ef28b631e415c3ff881028a988cb4e2
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=31d32d2b997711685536d475e3000ce3

[*]访问图片:通过 URL http://服务器IP:9000/桶名/文件名 可直接访问(需确保桶权限允许公开访问)。
http://markdown.kong.college/server/index.php?s=/api/attachment/visitFile&sign=a22cf9cb7fa81c8de156f854d64aa265
注意事项


[*]数据安全:

[*]生产环境中,MINIO_ROOT_PASSWORD 和访问凭证需使用强密码,并避免明文存储;
[*]重要文件的存储桶建议关闭公开访问,通过签名 URL 临时授权访问。

[*]端口与网络:

[*]若需外部访问,需确保服务器防火墙开放 9000(API)和 9001(控制台)端口;
[*]公网环境建议通过 HTTPS 访问(可配置 Nginx 反向代理并添加 SSL 证书)。

[*]数据备份:定期备份挂载的 /home/admin/minio/data 目录,避免数据丢失。
[*]性能优化:大文件场景可调整 MinIO 的纠删码模式(默认单节点单盘,生产建议多盘冗余)。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

讥慰捷 发表于 2025-12-11 12:50:01

收藏一下   不知道什么时候能用到

伯斌 发表于 2025-12-11 17:00:26

前排留名,哈哈哈

抑卞枯 发表于 7 天前

不错,里面软件多更新就更好了
页: [1]
查看完整版本: 使用 Docker 快速部署 MinIO 文件存储服务