Windows环境下Docker构建Node.js镜像时COPY指令报错求助
问题分析
错误cannot copy to non-directory: /var/lib/docker/overlay2/.../app/discord.js表明Docker执行COPY * ./时,试图将构建上下文中的内容复制到容器内的/app/discord.js,但目标路径已存在非目录(文件),或要复制的源是目录而目标是文件,导致冲突。
解决方案
1. 替换COPY命令
将COPY * ./改为COPY . .。COPY * ./依赖shell通配符扩展,可能遗漏隐藏文件或触发匹配异常;COPY . .会可靠复制构建上下文内所有文件(除.dockerignore排除项)到容器当前工作目录。
修改后的Dockerfile:
FROM node:10-alpine RUN mkdir -p /app WORKDIR /app COPY . . RUN yarn install CMD ["node", "/app/index.js"]
2. 添加.dockerignore文件
在项目根目录创建.dockerignore文件,排除无需复制到容器的内容,避免本地文件干扰构建:
node_modules .git .gitignore npm-debug.log yarn-error.log
3. 清理构建缓存(可选)
若之前的构建缓存残留异常,执行以下命令清理:
docker builder prune
内容的提问来源于stack exchange,提问作者snomuffinz
相关产品推荐
相关产品推荐

