首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对自反式docker Image构建进行理智检查?

对自反式docker Image构建进行理智检查?
EN

Stack Overflow用户
提问于 2019-06-14 21:25:41
回答 1查看 80关注 0票数 1

我正在使用docker编译一个相当慢的C++进程。构建我的软件大约需要3个小时。为了加快速度,我将ccache添加到了混搭中。

因此,在构建之后,我执行了以下操作:

docker create --name=ccache LAST_IMAGE然后使用docker cp复制出/root/.ccache目录-压缩它,然后使用ADD命令在重新构建它时将它重新插入到下一个映像中。

我只是切换到了下面的方法-因为它似乎占用了更少的驱动器中间空间:

当我调用docker build时,我传入了一个构建参数

代码语言:javascript
复制
  77   │     - DOCKER_BUILDKIT=1 docker build --force-rm
  78   │       --file devops/Dockerfile.buildAfsim
  79   │       --build-arg GIT_COMMIT=${CI_COMMIT_SHA}
  80   │       --build-arg PARENT_IMAGE=$DOCKER_REGISTRY$PARENT_IMAGE_NAME
  81   │       --build-arg LAST_BUILD_IMAGE=$DOCKER_REGISTRY$AFSIM_BUILD_IMAGE_NAME
  82   │       --tag $DOCKER_REGISTRY$AFSIM_BUILD_IMAGE_NAME .

这里的关键是我传入了两次图像本身:

代码语言:javascript
复制
--build-arg LAST_BUILD_IMAGE=$DOCKER_REGISTRY$AFSIM_BUILD_IMAGE_NAME
--tag $DOCKER_REGISTRY$AFSIM_BUILD_IMAGE_NAME

这反过来将告诉docker构建过程拉出最后一个映像-将cmakecache目录复制到当前docker上下文中

在我的docker文件中,我有:

代码语言:javascript
复制
ARG LAST_BUILD_IMAGE
FROM ${LAST_BUILD_IMAGE} as last_build

# Pass in the base build image
ARG PARENT_IMAGE
FROM ${PARENT_IMAGE}

# Copy the ccache and cmake files from the previous run in order to speed up build speeds
# This will cause issues - if we dont actualy have a last build saved somewhere but we'll deal
# with that when we get to it.
copy --from=last_build /devel/software/build /devel/software/build
copy --from=last_build /root/.ccache /root/.ccache

以前有人做过这样的事情吗?它确实对我的ci构建时间产生了很大的影响-但我想知道是否有更好的方法。到目前为止,这是我想出的最好的方法。

EN

回答 1

Stack Overflow用户

发布于 2019-06-14 21:33:23

您可以将缓存目录保存在卷中。以如下方式运行构建容器:

代码语言:javascript
复制
docker run -v ccache:/root/.ccache ...

注意,左边没有绝对路径,我们只有ccache。这会创建一个命名卷,该卷不会保存在主机系统上的任何特定目录中。它只能通过名字来访问。

在挂载ccache卷时,写入/root/.ccache的任何数据都将在将来的运行中自动可用。在任何时候,您都可以运行docker volume rm ccache来清空缓存并强制执行新的构建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56599165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档