Если ваш Dockerfile в настоящее время выглядит примерно так:
FROM ubuntu:16.04 AS builder
RUN apt-get install build-essential
COPY . ./
RUN ./build_all_the_things \
&& make install PREFIX=/usr DESTDIR/out
FROM alpine:3.8
COPY --from=builder /out/ /
CMD the_app
Вы можете легко разбить первую часть на собственный Dockerfile, как есть, и собрать его
docker build -f Dockerfile.builder -t me/builder .
COPY --from
должен назвать какой-то предыдущий этап в вашем Dockerfile, но этап не должен много делать;затем вы можете изменить вторую половину на
FROM me/builder AS builder
FROM alpine:3.8
COPY --from=builder /out/ /
CMD the_app
Большим недостатком этого является то, что вам нужны две отдельные команды docker build
для фактического построения окончательного образа.Вы могли бы написать сценарий оболочки, чтобы сделать их обоих вместе.