当前 Docker 体积大小为 1.18G,image 本身基于只有 51MB 的 ruby:2.6-alpine 在构建和编译。通过使用 dive 分析结果最大体积消耗为:
- yarn install 安装的 node_modules 依赖
541 MB
- apk 安装依赖库(必备和编译必备)
386 MB
- bundle install 安装的 rails 依赖
138 MB
第一个即使在使用完进行删除还是会保持体积的大小,第二个可以减少的是在所有依赖库安装成功后再做删除但会不会也存在第一个的问题,第三个是必备的如果能够把前面两个或者第一个减少掉提交也会骤降一倍我就很欣喜。搜索了一番找到一个解决方案也就是使用两个镜像其中第一个作为 builder 现在不太确定 yarn 和 bundle 依赖的库在编译后 COPY 到新 images 会不会抱错,这个不像是 go 可以静态编译或者动态编译然后在通过 ldd 把关联的动态库直接 COPY 过去那么简单。
当前 Docker 体积大小为 1.18G,image 本身基于只有 51MB 的
ruby:2.6-alpine在构建和编译。通过使用 dive 分析结果最大体积消耗为:541 MB386 MB138 MB第一个即使在使用完进行删除还是会保持体积的大小,第二个可以减少的是在所有依赖库安装成功后再做删除但会不会也存在第一个的问题,第三个是必备的如果能够把前面两个或者第一个减少掉提交也会骤降一倍我就很欣喜。搜索了一番找到一个解决方案也就是使用两个镜像其中第一个作为 builder 现在不太确定 yarn 和 bundle 依赖的库在编译后 COPY 到新 images 会不会抱错,这个不像是 go 可以静态编译或者动态编译然后在通过 ldd 把关联的动态库直接 COPY 过去那么简单。