【发布时间】:2019-12-30 07:11:46
【问题描述】:
我是 Docker 新手。我想通过使用 make 命令构建一个 c++ 库来构建一个 docker 映像。我在 Dockerfile 中的做法是这样的
- 从主机复制源代码
- 安装所需的软件包
- 运行制作
- 将库 (.so) 复制到图像内的不同文件夹中
- 删除源代码
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/*
我只想最小化最终图像的大小。这是我这样做的正确方法还是有更好的方法?请帮忙。
【问题讨论】:
-
您可以使用多阶段构建并仅将所需内容从一个映像复制到另一个映像
标签: docker makefile dockerfile alpine