You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Buildx警告:git提交信息读取失败问题求助

解决Docker Buildx读取Git提交信息失败的警告

问题原因

这个警告是Docker Buildx在尝试收集Git仓库元数据(如当前提交信息)时触发的。在Linux环境构建时,Buildx会在容器内执行git rev-parse --is-inside-work-tree命令,但你的基础镜像openjdk:11默认没有安装Git,或者构建上下文里没有包含.git仓库目录,导致命令执行失败,从而抛出警告。Windows环境下Buildx的实现逻辑不同,不会出现该问题。

解决方案

方案1:在构建阶段安装Git

修改你的Dockerfile的base阶段,在执行Gradle构建前安装Git(基于Debian的openjdk镜像可通过apt安装):

FROM openjdk:11 as base 
WORKDIR /app
COPY . .
# 安装Git并清理apt缓存以减小镜像体积
RUN apt-get update && apt-get install -y git --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN chmod +x gradlew
RUN ./gradlew build

FROM tomcat:9
WORKDIR webapps
COPY --from=base /app/build/libs/sampleWeb-0.0.1-SNAPSHOT.war .
RUN rm -rf ROOT && mv sampleWeb-0.0.1-SNAPSHOT.war ROOT.war

方案2:禁用Buildx的Git信息收集

如果不需要Buildx收集Git元数据,可以通过构建参数禁用该功能:

  • 构建时添加参数:
docker build --build-arg BUILDX_GIT_INFO=0 .
  • 或者直接在Dockerfile开头添加ARG声明:
ARG BUILDX_GIT_INFO=0

FROM openjdk:11 as base 
# ... 其余内容保持不变

方案3:将.git目录包含到构建上下文(不推荐)

检查你的.dockerignore文件,如果存在/.git规则,注释掉这一行,这样COPY . .会把本地的.git目录复制到容器内。但此方法会增大构建上下文体积,仅在你确实需要在构建过程中使用Git仓库信息时考虑。

内容的提问来源于stack exchange,提问作者Lutfi Alfawadleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:05:11