Как сразу сохранить образы докеров, созданные в многоступенчатом докере? - PullRequest
0 голосов
/ 25 мая 2018

Я хочу кешировать свой докер на travis.Лучшим способом было бы просто сохранить только что созданный образ на диск с помощью docker save .

Это было бы очень просто при классической сборке с одним изображением, но мне нужно иметь небольшойитоговое изображение, поэтому я делаю многоэтапное:

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 голосов
/ 25 мая 2018

Вы можете построить определенный этап с помощью docker build --target, поэтому вам не нужно все этапы строить все время.Я думаю, что это должно быть полезно в вашем случае.

Вы можете прочитать об этом в документации Docker здесь: https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage.

Когда вы создаете свой образ, вам не обязательно создавать весь Dockerfile, включая каждый этап.Вы можете указать целевой этап сборки.Следующая команда предполагает, что вы используете предыдущий Dockerfile, но останавливается на этапе с именем builder: Blockquote

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

Вы даже можете использовать внешнее изображение в качестве этапа, оноописано в тех же документах, так что вы можете сделать что-то вроде этого:

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

...