周末测试了下把一些扩展编译 so 的过程改成多段构建(先不管为什么),最后一步是 FROM php:fpm-alpine
然后 COPY --from=0 /path/to/so /path/to/so
。结果意外发现,这样搞比 FROM phpswoole:8.1-alpine
当底的镜像,最终成包多了 30M 左右。
于是就单独起了个 fpm-alpine 的容器自己操下载源码安装,在默认的情况下,最终出来的 so 是 34M ,但是 phpswoole:8.1-alpine (有开 http2/json 等其他选项) 里的 so 只有 2.8M ,再根据 swoole 官方的 Dockerfile ,自己在 fpm-alpine 的容器里执行了下,全部默认的情况下,只有 2.4M 。
也就是说。在同一份源码的情况下,用 docker-php-source && docker-php-ext-configure && docker-php-ext-install
比自己 phpize && configure && make
最后出包要少 30M 。再次尝试了下 pecl install swoole
的一键安装方案,结果出来的 so 和自己编译的一样,34M 。
小弟对 PHP 底层这块确实了解不多,请问老哥们有什么头绪么。如果 docker-php-ext-x 系列函数有什么特殊优化,那不是应该所有扩展都用它装么,为啥 swoole 官方依然选择了 pecl 安装 redis 扩展呢。还是 swoole 这个扩展本身有什么玄机?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.