我想在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 并稍后恢复?
答案 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