进击的 Java ,云原生时代的蜕变(2)
发布时间:2019-09-20 16:14 所属栏目:21 来源:易立
导读:检查一下构建出的 Docker 镜像, petclinic-openjdk-openj9 的大小为 871MB,而基础镜像 adoptopenjdk/openjdk8 仅有 300MB!这货也太膨胀了! $dockerimagespetclinic-openjdk-hotspot REPOSITORYTAGIMAGEIDCREATEDS
检查一下构建出的 Docker 镜像, ”petclinic-openjdk-openj9“ 的大小为 871MB,而基础镜像 ”adoptopenjdk/openjdk8“ 仅有 300MB!这货也太膨胀了!
原因是:为了构建 Spring 应用,我们在镜像中引入了一系列编译时依赖,如 Git,Maven 等,并产生了大量临时的文件。然而这些内容在运行时是不需要的。 在著名的软件12要素第五条明确指出了,”Strictly separate build and run stages.“ 严格分离构建和运行阶段,不但可以帮助我们提升应用的可追溯性,保障应用交付的一致性,同时也可以减少应用分发的体积,减少安全风险。 镜像瘦身Docker 提供了 Multi-stage Build(多阶段构建),可以实现镜像瘦身。 我们将镜像构建分成两个阶段:
查看一下新镜像大小,从 871MB 减少到 167MB!
镜像瘦身之后将大大加速应用分发速度,我们是否有办法优化应用的启动速度呢? 从 JIT 到 AOT —启动提速为了解决 Java 启动的性能瓶颈,我们首先需要理解 JVM 的实现原理。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读