Лишь сегодня узнал о прекрасной возможности делать docker image компилируемых приложений без оставления зависимостей для этапа компилирования, и без применения тыщи действий для выуживания исполняемых файлов. Выглядит мультиэтапная сборка примерно так (реальный Dockerfile):

FROM debian:stable-slim AS builder

RUN apt-get update && \
apt-get install -y binutils-dev build-essential cmake \
git libcurl4-openssl-dev libdw-dev libiberty-dev \
ninja-build python3 zlib1g-dev \
;

ADD . /src/

RUN mkdir /src/build && \
cd /src/build && \
cmake -G 'Ninja' .. && \
cmake --build . && \
cmake --build . --target install

FROM debian:stable-slim

RUN apt-get update && \
apt-get install -y binutils libcurl4 libdw1 zlib1g && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/bin/kcov* /usr/local/bin/
COPY --from=builder /usr/local/share/doc/kcov /usr/local/share/doc/kcov

CMD ["/usr/local/bin/kcov"]

Служит для, очевидно, деплоя только что собранного приложения в докер образ и, так сказать, запуска-тестирования без отрыва от «производства»
https://habr.com/ru/post/349802/