【发布时间】:2019-03-21 19:03:37
【问题描述】:
所以,我对 Docker 很陌生。让我解释一下这个问题的背景。
我有 10 - 20 个 Spring Boot 微服务应用程序,每个应用程序都运行在我本地机器的不同端口上。
但是要迁移到 Docker,根据我的学习,每个服务必须在不同的 Docker 容器中,以便快速部署或复制。
对于每个 Docker 容器,我们需要创建一个新的 Docker 镜像。
每个 Docker 映像都必须包含一个 JRE,才能运行 Spring Boot 应用程序。最大约为 200 MB。这意味着每个 docker 映像最大为 350 MB。 另一方面,在我的本地 PC 上,我只有一个 200 MB 的 JRE,每个应用程序只占用几 MB 的空间。
基于此,我的本地系统需要 600 MB,但所有 Docker 映像需要 7 GB。
这种方法正确吗? DockerHub 中的“OpenJDK”是否应该添加到每个镜像中?
为什么目标PC可能已经安装了JDK,但是镜像还是很大?
【问题讨论】:
-
您似乎在谈论 JDK 和 JRE - 理想情况下,您会避免使用 JDK 构建映像,因为您只在构建时需要它,并且只在生产映像中使用 JRE。请注意,您在 Dockerfile 中有多个
FROMs,因此您可以使用 JDK 构建,然后仅使用 JRE 打包。 -
确实如此。看看multistage builds。这允许您在一个映像中使用 JDK 进行构建,然后将构建的工件复制到更轻的运行时映像中。
标签: java docker spring-boot microservices