通过Dokploy部署MinIO的访问异常排查
最近在闭关憋大招(开发新产品),今天在服务器上部署MinIO时遇到了一个刁钻的问题,顺便就记录一下。
我是通过Dokploy内置的MinIO模板部署的,部署过程本身没什么问题,很流畅,控制台可以打开,文件上传也正常,但通过公网始终无法访问上传的文件,返回的都是 404。

起初以为是桶权限的问题,于是装上了 MinIO 的命令行工具 mc 来排查权限:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc && sudo mv mc /usr/local/bin/
mc alias set myminio http://localhost:9000 [minio登录账号] [minio登录密码]
mc anonymous set download myminio/[minio桶名称] # 设置桶匿名可读
本地 curl http://localhost:9000/xxx/xxx.png 是能成功返回图片内容的。但通过域名 https://xxx.com/... 无论怎么调,始终是 404。

检查 CDN 配置、Nginx 反代都没有问题。最终定位到问题可能出在 Docker Compose 的兼容性上。Dokploy 用的是新版 Compose,而新版中某些端口绑定和网络行为发生了变化。
解决的关键是加上--compat:

这个 --compat 开启兼容模式后,一切都通了。

这类问题并不稀奇,真正难的是耐心和路径判断能力。以后遇到容器服务“服务没问题但访问失败”的情况时,别忘了考虑 Compose 网络层的兼容性选项。