之前我都是用 daoclou 进行多步构建,先一个镜像 build 好,然后提取出文件,再复制到另外一个镜像里
compile:
build_dir: /
cache: true
dockerfile_path: /Dockerfile/Dockerfile.build
extract:
- /blog
package:
build_dir: /
cache: true
dockerfile_path: /Dockerfile/Dockerfile.deploy
然后搜索了一下 发现 docker 原生支持多步构建了。 然后在 daocloud 里试了一下啊也支持。
FROM gradle:4.0.1-alpine as build
MAINTAINER FandiYuan <[email protected]>
ADD ./ /tmp/
RUN cd /tmp && \
gradle build
FROM java:8-jre-alpine
COPY --from=build /tmp/build/libs/diamond-yuan-fast-airport-0.01.jar /
ENTRYPOINT ["java", "-server", "-jar", "/diamond-yuan-fast-airport-0.01.jar"]
在采用多步构建之前,镜像大小在 150m 左右,采用了多步构建以后,只有 70m、基本上就是 jre 的大小了。