如何立即保存在多阶段泊坞窗中创建的码头工人图像?

时间:2018-05-25 10:44:42

标签: docker travis-ci

我想在travis上缓存我的docker。最好的方法是使用 docker save 将新创建的映像保存在磁盘上。

使用经典的one-image-docker构建会非常简单,但我需要有一个小的最终图像,所以我做了多阶段:

FROM danlynn/ember-cli:3.0.0 AS deps

RUN mkdir -p /client

# get nodejs deps:
COPY client/package.json /client/
COPY client/package-lock.json /client/

WORKDIR /client

RUN npm install node-sass
RUN npm install
RUN npm rebuild node-sass
... more long operations

FROM node:wheezy AS server
COPY --from=deps /client/ /client/

有没有办法立即保存图片 deps 并稍后恢复?

1 个答案:

答案 0 :(得分:1)

您可以使用docker build --target构建特定阶段,因此您无需始终构建所有阶段。我认为这对你的情况应该有所帮助。

您可以在Docker文档中阅读此内容:https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage

  

构建映像时,不一定需要构建整个Dockerfile,包括每个阶段。您可以指定目标构建阶段。以下命令假定您使用的是以前的Dockerfile,但在名为builder的阶段停止:   块引用

$ docker build --target builder -t alexellis2/href-counter:latest .

您甚至可以将外部图像用作舞台,在相同的文档中对其进行描述,因此您可以执行以下操作:

COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf