MinIO图床上传工具 Docker部署指南

MinIO图床上传工具 Docker部署指南

镜像信息

  • 镜像名称: minio-image-uploader:latest
  • 镜像文件: minio-image-uploader.tar
  • 镜像大小: 161MB
  • 基础镜像: node:18-alpine
  • 更新时间: 2026-01-30

快速部署

1. 加载镜像

1
docker load -i minio-image-uploader.tar

2. 运行容器

1
2
3
4
5
6
7
8
9
10
11
docker run -d \
--name minio-uploader \
-p 3000:3000 \
-e MINIO_ENDPOINT=localhost \
-e MINIO_PORT=9000 \
-e MINIO_ACCESS_KEY=minioadmin \
-e MINIO_SECRET_KEY=minioadmin \
-e MINIO_BUCKET=images \
-e CUSTOM_DOMAIN=http://localhost:9000 \
-e UPLOAD_PREFIX=images/ \
minio-image-uploader:latest

3. 访问应用

打开浏览器访问: http://localhost:3000

环境变量配置

变量名 描述 默认值 示例
MINIO_ENDPOINT MinIO服务地址 localhost 192.168.1.100
MINIO_PORT MinIO服务端口 9000 9000
MINIO_ACCESS_KEY MinIO访问密钥 minioadmin your-access-key
MINIO_SECRET_KEY MinIO秘密密钥 minioadmin your-secret-key
MINIO_BUCKET 存储桶名称 images my-images
MINIO_USE_SSL 是否使用SSL false true
CUSTOM_DOMAIN 自定义域名 http://localhost:9000 https://cdn.example.com
FILE_NAME_TEMPLATE 文件命名模板 {timestamp}.{extName} {year}/{month}/{day}/{md5}.{extName}
UPLOAD_PREFIX 默认目录前缀 images/ 或 gallery/2026/
PORT 应用端口 3000 3000

功能特性

图片上传

  • 支持拖拽上传
  • 支持多文件同时上传
  • 支持 JPEG, PNG, GIF, WebP 格式
  • 最大文件大小:10MB

文件管理

  • 灵活的文件命名规则(时间戳、MD5、日期结构等)
  • 支持自定义目录前缀
  • 智能重复文件处理(自动重命名、跳过、覆盖)
  • 环境变量默认配置

系统设置

  • 动态MinIO连接配置(支持运行时修改)
  • 配置持久化(重启容器后设置不丢失)
  • 连接测试功能
  • 设置导入/导出

Web界面

  • 响应式设计
  • 实时上传进度显示
  • 图片预览和管理
  • 系统信息监控

新版本改进

🎉 配置持久化功能

  • 问题:之前版本在容器重启后会丢失系统设置
  • 解决:新版本使用 config.json 文件保存动态配置
  • 效果:通过Web界面修改的MinIO连接参数会永久保存

🎯 环境变量增强

1
2
3
4
5
6
7
# 新增:默认目录前缀支持
-e UPLOAD_PREFIX=images/
-e UPLOAD_PREFIX=gallery/$(date +%Y)/

# 优化:文件命名模板
-e FILE_NAME_TEMPLATE={timestamp}.{extName}
-e FILE_NAME_TEMPLATE={year}/{month}/{day}/{md5}.{extName}

📦 镜像优化

  • ✅ 移除了开发文件(.claude/、.md、test-
  • ✅ 优化了文件结构和构建过程
  • ✅ 更小的镜像体积和更快的启动速度

使用 Docker Compose

创建 docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: '3.8'
services:
minio-uploader:
image: minio-image-uploader:latest
container_name: minio-uploader
ports:
- "3000:3000"
environment:
- MINIO_ENDPOINT=minio
- MINIO_PORT=9000
- MINIO_ACCESS_KEY=minioadmin
- MINIO_SECRET_KEY=minioadmin
- MINIO_BUCKET=images
- MINIO_USE_SSL=false
- CUSTOM_DOMAIN=http://localhost:9000
- FILE_NAME_TEMPLATE={timestamp}.{extName}
- UPLOAD_PREFIX=uploads/
volumes:
- ./config:/app/config.json # 可选:持久化配置文件
depends_on:
- minio
restart: unless-stopped

minio:
image: quay.io/minio/minio:latest
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
restart: unless-stopped

volumes:
minio_data:

启动:

1
docker-compose up -d

配置持久化

方案1:使用内置配置文件(推荐)

1
2
# 正常启动,配置会自动保存到容器内的config.json
docker run -d --name minio-uploader -p 3000:3000 minio-image-uploader:latest

方案2:挂载配置文件

1
2
3
4
5
6
# 将配置文件挂载到主机,实现跨容器持久化
docker run -d \
--name minio-uploader \
-p 3000:3000 \
-v ./app-config.json:/app/config.json \
minio-image-uploader:latest

健康检查

容器提供健康检查端点:

1
2
3
4
5
6
7
8
9
10
11
# 检查容器状态
docker ps

# 查看应用日志
docker logs minio-uploader

# 测试应用健康状态
curl http://localhost:3000/health

# 查看系统配置
curl http://localhost:3000/api/config

数据流和存储

1
2
3
用户上传 → Docker容器(minio-uploader) → MinIO服务器 → 文件存储

config.json (配置持久化)
  • 文件存储:直接存储在MinIO对象存储服务器
  • 配置存储:保存在容器内的config.json文件
  • 应用本身:无状态,可以随时重启

API端点

端点 方法 描述
/api/upload/direct POST 单文件上传
/api/upload/multiple POST 批量上传
/api/upload/picgo POST PicGo兼容接口
/api/images GET 图片列表
/api/config GET 系统配置
/api/update-minio-config POST 更新MinIO配置
/api/test-minio POST 测试MinIO连接
/health GET 健康检查

故障排除

1. 连接失败

1
2
3
4
5
6
7
8
# 检查MinIO服务状态
docker logs minio

# 检查网络连通性
docker exec minio-uploader ping minio

# 验证端口映射
netstat -tulpn | grep :3000

2. 配置丢失

  • 已修复:新版本支持配置持久化
  • 如果仍有问题,检查容器写入权限
  • 可选择挂载配置文件到主机目录

3. 上传失败

1
2
3
4
5
6
7
8
# 查看详细日志
docker logs -f minio-uploader

# 检查存储桶权限
docker exec minio mc admin info local

# 测试文件上传
curl -X POST -F "image=@test.jpg" http://localhost:3000/api/upload/direct

4. 性能优化

1
2
3
4
5
# 内存限制(可选)
docker run -m 512m minio-image-uploader:latest

# CPU限制(可选)
docker run --cpus="0.5" minio-image-uploader:latest

高级用法

1. 生产环境部署

1
2
3
4
5
6
7
8
9
10
docker run -d \
--name minio-uploader-prod \
--restart=always \
-p 80:3000 \
-e NODE_ENV=production \
-e MINIO_ENDPOINT=minio.example.com \
-e MINIO_USE_SSL=true \
-e CUSTOM_DOMAIN=https://cdn.example.com \
-v /var/log/minio-uploader:/app/logs \
minio-image-uploader:latest

2. 负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# docker-compose.yml
services:
minio-uploader-1:
image: minio-image-uploader:latest
ports: ["3001:3000"]

minio-uploader-2:
image: minio-image-uploader:latest
ports: ["3002:3000"]

nginx:
image: nginx:alpine
ports: ["80:80"]
# 配置负载均衡到3001和3002端口

安全建议

  1. 访问控制

    1
    2
    # 使用防火墙限制访问
    ufw allow from 192.168.1.0/24 to any port 3000
  2. 密钥管理

    1
    2
    3
    4
    # 使用环境变量文件
    echo "MINIO_ACCESS_KEY=your-secure-key" > .env
    echo "MINIO_SECRET_KEY=your-secure-secret" >> .env
    docker run --env-file .env minio-image-uploader:latest
  3. HTTPS部署

    • 使用反向代理(Nginx/Traefik)
    • 配置SSL证书
    • 强制HTTPS重定向

版本更新

1
2
3
4
5
6
7
8
9
10
11
12
13
# 备份当前配置
docker cp minio-uploader:/app/config.json ./config-backup.json

# 停止旧容器
docker stop minio-uploader

# 加载新镜像
docker load -i minio-image-uploader-new.tar

# 启动新容器(配置会自动迁移)
docker run -d --name minio-uploader-new \
-v ./config-backup.json:/app/config.json \
minio-image-uploader:latest

支持

  • 文档:查看项目README和源代码
  • 日志docker logs -f minio-uploader
  • 配置:访问 http://localhost:3000 → 系统设置
  • API测试:使用curl或Postman测试各个端点

如有问题,请查看容器日志或提交Issue。


MinIO图床上传工具 Docker部署指南
https://www.qxz5637.top/2026/02/05/MinIO图床上传工具本地Docker镜像部署指南/
作者
文心
发布于
2026年2月5日
许可协议