我是Docker的新手。我想通过使用make命令构建c ++库来构建docker映像。我在Dockerfile中执行此操作的方式是
Dockerfile代码如下所示。
我面临的问题是,即使删除了源代码,最终的图像大小仍然很大。
由于Dockerfile的每一行都创建一个不同的层,因此有一种方法可以使用curl或wget下载源代码,然后再在同一层中删除源代码。但是我不喜欢这个解决方案。
FROM alpine
RUN apk update && apk add <required_packages>
COPY source_code /tmp/source_code
RUN make -C /tmp/source_code && \
mkdir /libraries/
cp /tmp/lib/* /libraries/
rm -rf /tmp/*
我只想最小化最终图像大小。是我这样做的正确方法,还是有更好的方法?请帮忙。
您可以进行多阶段构建,然后将工件复制到前一张图像上的新图像上。还安装所有必需的运行时依赖项(如果有)。
FROM alpine AS builder
RUN apk add --no-cache <build_dependencies>
COPY source_code /tmp/source_code
RUN make -C /tmp/source_code && \
mkdir /libraries/
cp /tmp/lib/* /libraries/
rm -rf /tmp/*
FROM alpine
RUN apk add --no-cache <runtime_dependencies>
COPY --from=builder /libraries/ /libraries/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句