
网站图片太大拖慢加载,又不想把原图交给第三方压缩服务?Flyimg 是一个基于 Docker 的自托管图片实时优化服务:图片地址后面拼上尺寸、裁剪、格式参数,请求时实时转换并缓存,下次直接命中缓存返回。本文讲清它的版本怎么选、Docker 部署的 4 个关键卡点、parameters.yml 里 5 个必改项,以及它和 imgproxy、Thumbor 的分工边界,帮你一次选对、用稳。
基本信息
| 项目 | Flyimg |
|---|---|
| 类型 | 自托管图片实时处理与分发服务 |
| 技术栈 | PHP + nginx + PHP-FPM + ImageMagick(容器内) |
| 部署方式 | Docker(官方提供镜像;README 称已在 Mac、Windows、Ubuntu 测试) |
| 输出格式 | AVIF、WebP、MozJPEG、PNG、GIF;JPEG XL 需 ImageMagick 启用相应能力 |
| 核心能力 | URL 参数描述尺寸/裁剪/压缩;o_auto 按 Accept 头协商格式;处理结果缓存 |
| 许可证 | AGPL-3.0(商用前先评估传染性条款) |
| 配置入口 | parameters.yml(可挂载自定义) |
版本选择:生产环境别追 latest
| 版本 | 特点 | 适合谁 |
|---|---|---|
| GitHub Release 标签版 | 版本号可追溯,可 pin 镜像 digest,回滚有据 | 生产环境首选 |
| Docker Hub latest | 永远最新,但行为可能随更新变化 | 测试/体验环境 |
| main 分支源码构建 | 最新功能,未经发布流程 | 要二次开发的团队 |
明确推荐:生产用 Release 标签版并 pin 住镜像 digest;latest 只放测试环境。结论先行——省掉半夜被上游更新炸醒的风险。
安装关键卡点(4 个)
- 先拷出 parameters.yml 再挂载:直接用空目录做卷挂载会遮挡容器内默认配置,导致起服失败。正确姿势是先 docker cp 把默认 parameters.yml 拷出来,改完再挂载回去。
- 宿主机 8080 端口冲突:README 默认映射 8080 端口,本机已有服务占用会起服失败。改
-p 8081:80换端口,或停掉占用进程。 - 源码构建别漏 composer install:本地开发方式下依赖不在镜像里,需要在容器内执行 composer install,漏了这步页面直接 500。
- 先验证 AVIF 真出得来:AVIF/JXL 输出取决于镜像构建时的 ImageMagick delegate。拉完镜像先用
?o_auto=1打一张图,看响应头是不是image/avif,别等上线才发现。
装完必改的 5 个设置(parameters.yml)
- 图片源白名单:把允许抓取的域名锁成自家站点。默认放开等于把你的服务器变成免费公图床,被刷流量时哭都来不及。
- 缓存目录挂到宿主机卷:处理后的图片默认写容器内,容器一重建缓存全丢,还得多花 CPU 重新计算。挂卷后重启无忧。
- 默认输出质量:默认质量偏高,Web 场景建议设到 80–85,体积直降三四成,肉眼几乎看不出差别。
- o_auto 格式协商:打开后按请求的 Accept 头自动选择 AVIF/WebP,老浏览器自动回退,不用为不同浏览器写两套图片地址。
- 单图尺寸与内存上限:限制最大输入分辨率和 ImageMagick 内存占用,防一张超大图把容器 OOM 拖死。
注意事项与常见问题
- 公网暴露前先做访问控制:README 没有给出完整的鉴权方案,URL 签名或前置网关二选一,别把图片处理入口裸奔在公网。
- 远程图片抓取失败:先看源站防盗链(Referer/UA 校验)和抓取超时;内网图床要确认容器网络是否可达。
- 缓存不更新:换了原图但 URL 参数没变,会一直命中旧缓存。清缓存目录或给参数加版本号解决。
- 容器重启后配置丢了:parameters.yml 没做卷挂载就是这个下场,检查 compose 文件的 volumes 段。
- AGPL-3.0 许可证:纯自用不分发问题不大;一旦把修改过的版本作为网络服务提供,传染性条款先生效,建议先让法务看一遍再上线。
适合谁、不适合谁
| Flyimg | imgproxy | Thumbor | |
|---|---|---|---|
| 实现语言 | PHP,易读易魔改 | Go,高性能 | Python,插件生态多 |
| 上手成本 | 低,一个容器 | 低 | 中,需配插件 |
| 性能取向 | 够用 | 最高 | 中 |
一句话判断:适合已有 Docker 运维能力、想自建 Cloudinary-like 图片入口的团队,尤其 PHP 栈方便二次魔改的;不适合追求极致性能的(选 imgproxy)、不想碰服务器要开箱即用 CDN 的(直接买 Cloudinary/imgix)、需要细粒度权限与多存储后端的(先读源码再定)。
开源地址
GitHub 国内访问较慢,如打不开可多刷新几次
推广

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
版权与使用提示
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›
文章推荐
标签推荐
正文完







