【发布时间】:2020-05-15 18:40:18
【问题描述】:
我的目录结构:
├── src/
├───── backend/
├─────── Dockerfile
├─────── ...
├───── frontend/
├─────── Dockerfile
├─────── node_modules/
├─────── ...
├───── commons/
├─────── ...
├── .dockerignore
.dockerignore 包含**/node_modules 行,由于使用了commons,我的构建上下文是根目录。
我都在运行
docker build ... -f src/backend/Dockerfile .
docker build ... -f src/frontend/Dockerfile .
并行,有时backend 构建会因以下特定错误而失败:
错误检查上下文:'文件 ('/workspace/src/frontend/node_modules/.staging/wrap-ansi-2a6f888f') .dockerignore' 未找到或排除。
据我了解(请参阅 Why do Node modules go into .staging folder?).staging 文件夹是临时的,在运行时可能会出现竞争情况(请参阅 Docker cli source)。
但是,如果 node_modules 被忽略,为什么这个文件首先被遍历?我是在滥用忽略上下文功能还是实际的竞争条件?
该问题在 Google Cloud Build 环境中重现,我通过映像 gcr.io/cloud-builders/docker 使用 docker cli,它使用 docker 客户端版本 19.03.5 并使用 docker 服务器版本 18.09.3 运行,API 版本 @987654335 @。
【问题讨论】:
-
首先,后端和前端服务都使用JS吗?其次,请添加您的 Dockerfile,以便我们可以获取更多关于 Dockerfile 运行过程的上下文
标签: docker dockerfile node-modules docker-build