Docker - 无法复制到非目录:/var/lib/docker/overlay2/xw77p2bxfkhhnwqs5umpl7cbi/merged/app/.git

Ped*_*mas 15 windows docker dockerfile windows-subsystem-for-linux wsl-2

我正在尝试在 Windows 计算机上构建 docker 映像,但不断收到此错误:

[+] Building 2.1s (12/15)
 => [internal] load build definition from Dockerfile                                                                                                                                                       0.0s 
 => => transferring dockerfile: 538B                                                                                                                                                                       0.0s 
 => [internal] load .dockerignore                                                                                                                                                                          0.0s 
 => => transferring context: 35B                                                                                                                                                                           0.0s 
 => [internal] load metadata for docker.io/library/node:alpine                                                                                                                                             1.0s 
 => [ 1/11] FROM docker.io/library/node:alpine@sha256:6b56197d33a56cd45d1d1214292b8851fa1b91b2ccc678cee7e5fd4260bd8fae                                                                                     0.0s 
 => [internal] load build context                                                                                                                                                                          1.0s 
 => => transferring context: 15.72kB                                                                                                                                                                       1.0s 
 => CACHED [ 2/11] WORKDIR /app                                                                                                                                                                            0.0s 
 => CACHED [ 3/11] COPY package.json .                                                                                                                                                                     0.0s 
 => CACHED [ 4/11] COPY tsconfig.json .                                                                                                                                                                    0.0s 
 => CACHED [ 5/11] COPY swagger.yaml .                                                                                                                                                                     0.0s 
 => CACHED [ 6/11] COPY services .                                                                                                                                                                         0.0s 
 => CACHED [ 7/11] RUN yarn install                                                                                                                                                                        0.0s 
 => ERROR [ 8/11] ADD . /app                                                                                                                                                                               0.0s 
------
 > [ 8/11] ADD . /app:
------
cannot copy to non-directory: /var/lib/docker/overlay2/xw77p2bxfkhhnwqs5umpl7cbi/merged/app/.git
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 如下:

FROM node:alpine

#Create Directory for the Container
WORKDIR /app

#Copy the package.json and tsconfig.json to work directory
COPY package.json .
COPY tsconfig.json .
COPY swagger.yaml .
COPY services . 

#Install all packages
RUN yarn install

#Copy all other source code to work directory
ADD . /app

#Build sources
RUN yarn run build

#Clean src directory
RUN rm -rf ./src/
RUN rm -rf ./services/src/

#Expose Ports
EXPOSE 3000

#Entry
CMD ["yarn", "start"]
Run Code Online (Sandbox Code Playgroud)

这个 Dockerfile 在我同事的 Linux 机器上工作,但在我的 Windows 机器上失败。

这是我的 Docker 版本

Docker version 20.10.7, build f0df350
Run Code Online (Sandbox Code Playgroud)

在 Windows 上运行并使用 wsl 2 与其交互。

但使用 Windows 命令提示符构建也会失败。

预先感谢您的帮助!

Vai*_*pal 5

只需验证 .git 实际上是一个文件或文件夹。或者检查文件夹和文件之间是否存在名称冲突

似乎您正在尝试将文件夹复制到文件(非目录)。

我也遇到过类似的问题error: failed to solve: cannot replace to directory /var/lib/docker/overlay2/*/*/folder_a with file。结果我有一个名为“folder_a”的二进制文件。

删除与folder_name匹配的文件解决了我的问题。