以 Docker 方式部署基于 MinIO 与 Thumbor 的对象存储服务
穷人的孩子早当家是有一定道理的。由于用不起某里云的 OSS (对象存储)服务,自己折腾了一番。期间踩坑若干,故自行记录聊以慰籍。
技术选型是采用 MinIO 与 Thumbor 无疑,网上相关的文章也很多。我的故事分为 5 个节点:
0x00、最初的记忆——Docker 安装
是的,我一开始打算以 Docker 方式部署。
MinIO 的 Docker 部署方式可以完全参照官方文档进行:
docker run \
-d \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-e MINIO_ROOT_USER='xxx' \
-e MINIO_ROOT_PASSWORD='xxx' \
minio/minio server /data --console-address ':9001'
MINIO_ROOT_USER 与 MINIO_ROOT_PASSWORD 是登录 MinIO Console 的账号密码,记得替换。
而 Thumbor 则是选择了一个叫做 Minimal Compact Thumbor 的镜像,真的是简单:
docker run -p 8888:80 minimalcompact/thumbor
一行搞定。
搞到这里,MinIO 已通过 Docker 方式跑起来了,本地测试 Thumbor 发现无法处理 MinIO 提供的私有地址,比如以下这种情况。
通过调用 MinIO 的 getPresignedObjectUrl 接口获取的私有地址:
http://127.0.0.1:9000/test/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=348201GIYPQI49I606RF%2F20210713%2Fxxx%2Fs3%2Faws4_request&X-Amz-Date=20210713T042509Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=xxx
Thumbor 处理的地址:
http://127.0.0.1:8888/unsafe/500x0/http://127.0.0.1:9000/test/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=348201GIYPQI49I606RF%2F20210713%2Fxxx%2Fs3%2Faws4_request&X-Amz-Date=20210713T042509Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=xxx
结果报 400 错误。