Docker 无法复制 .git 文件夹

M H*_*her 3 windows git docker

当尝试在 docker 构建期间生成使用head当前提交哈希调用的文件时(用于内部 .NET 服务版本控制),docker 似乎根本无法将该.git文件夹拉入映像中。

鉴于以下情况DockerFile

FROM alpine/git AS version
WORKDIR /src
COPY .git/ ./.git/
RUN git rev-parse HEAD > head
Run Code Online (Sandbox Code Playgroud)

有时候是这样的:

 => ERROR [version 2/4] COPY .git/ ./.git/                                        0.0s
------
 > [version 2/4] COPY .git/ ./.git/:
------
failed to compute cache key: "/.git" not found: not found
Run Code Online (Sandbox Code Playgroud)

也许更有趣的是,使用COPY . .它时会失败,如下所示:

 => ERROR [version 4/4] RUN git rev-parse HEAD > head                             1.7s
------
 > [version 4/4] RUN git rev-parse HEAD > head:
#36 1.613 fatal: not a git repository (or any of the parent directories): .git
------
executor failed running [/bin/sh -c git rev-parse HEAD > head]: exit code: 128
Run Code Online (Sandbox Code Playgroud)

Dockerfilegit 文件夹与as ls -Force(windows powershell 版本)位于同一根目录,ls -a返回以下结果(为了隐私而编辑了一些文件夹):

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         11/4/2020   2:45 PM                .ci
d--h--         3/17/2021   3:06 PM                .git
d-----          2/3/2021   6:12 PM                .github
d-----          9/8/2020   7:22 PM                .idea
d-----         1/20/2021   1:50 PM                .run
d--h--         9/29/2020   6:53 PM                .vs
d-----         3/17/2021  10:55 AM                build
d-----         11/4/2020   2:45 PM                lib
d-----          9/7/2020  11:12 AM                src
d-----         11/4/2020   2:45 PM                tests
-a----         3/15/2021   4:19 PM            340 .dockerignore
-a----          2/3/2021   6:12 PM            186 .editorconfig
-a----          2/3/2021   6:12 PM            580 .gitignore
-a----         3/17/2021   4:07 PM           1611 Dockerfile
Run Code Online (Sandbox Code Playgroud)

取消隐藏.git不会改变此行为。

/sf/answers/3790547001/是一个相关的答案,似乎在这里不起作用。至少在 Windows 10 上

161*_*903 8

检查.git您的文件中是否包含该.dockerignore文件,如果包含,请将其删除。