为什么多阶段docker构建卡在“ COPY --from = builder ...”

时间:2020-04-06 12:38:07

标签: docker jenkins kubernetes docker-in-docker

上下文如下:

  • 詹金斯
  • Kubernetes插件
  • Docker-in-Docker / dind容器
  • 多阶段Dockerfile

流程如下:

  1. 拉动构建器docker pull repo/image:builder
  2. 构建构建器DOCKER_BUILDKIT=1 docker build . --build-arg BUILDKIT_INLINE_CACHE=1 --target builder --cache-from repo/image:builder --tag repo/image:builder
  3. 推送生成器docker push repo/image:builder
  4. 拉出图像docker pull repo/image:tag
  5. 构建图像DOCKER_BUILDKIT=1 docker build . --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from repo/image:builder --cache-from repo/image:tag --tag repo/image:tag
  6. 推送图片docker push repo/image:tag

Dockerfile:

FROM node:8.16.0 as builder

WORKDIR /app
RUN mkdir /app/frontend
COPY frontend/package.json /app/frontend/
WORKDIR /app/frontend
RUN npm install
COPY frontend /app/frontend
RUN npm run build
FROM nginx:1.13.8-alpine
WORKDIR /project/web
COPY --from=builder --chown=nginx:nginx /app/frontend/built /project/web/public

COPY --from=builder --chown=nginx:nginx /app/frontend/built /project/web/public,docker构建被永久卡住(在30-40分钟后我手动将其停止)而没有错误。

编辑:在第一次运行时,当注册表中还没有图像时,生成器缓存和COPY --from=builder会按预期工作。只有从第二个版本开始,它才会停留在COPY --from=builder

1 个答案:

答案 0 :(得分:0)

我不知道问题出在哪里,但是看来tiborvass/docker:19.03.8-dind-bk1413的dind图片是稳定的,并且不会永久挂起。

https://github.com/moby/buildkit/issues/1430