"fatal: unable to auto-detect email address" 在 DOCKER

"fatal: unable to auto-detect email address" in DOCKER

我的 docker 运行 失败了,因为 git 抱怨我没有设置用户配置,我的旧图像从来不需要它。

From git.mysite.com:user/project
 * branch            dev -> FETCH_HEAD
*** Please tell me who you are.
Run
   git config --global user.email "you@example.com"
   git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@V_2_compute1.(none)')

我有两个非常相似但行为不同的 Dockerfile。

第一个nvcr.io/nvidia/tensorflow:20.02-tf1-py3 as its source and the second one with nvcr.io/nvidia/tensorflow:20.12-tf2-py3。 第一个是 Ubuntu 18.04,第二个是 Ubuntu 20.04。检查容器时,它们有不同的 git 版本(2.17.1 vs 2.25.1)但我不确定是否这就是问题所在。

下面是两个Dockerfile(简体):

# syntax=docker/dockerfile:experimental

FROM nvcr.io/nvidia/tensorflow:20.02-tf1-py3 as intermediate

ARG SSH_PRIVATE_KEY

RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get install -y git \
&& mkdir /srv/username \
&& cd /srv/username
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan git.mysite.com >> ~/.ssh/known_hosts
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
RUN --mount=type=ssh git clone -b master git@git.mysite.com:user/project.git /srv/username/project
ENV PYTHONPATH "${PYTHONPATH}:/srv/username/project"
CMD /usr/sbin/service ssh restart && cd /srv/username/project && git pull origin feature-branch && git checkout feature-branch \
&& /srv/username/project/script.py 

有问题的:

# syntax=docker/dockerfile:experimental

FROM nvcr.io/nvidia/tensorflow:20.12-tf2-py3 as intermediate

ARG SSH_PRIVATE_KEY

RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get install -y git \
&& mkdir /srv/username \
&& cd /srv/username
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan git.mysite.com >> ~/.ssh/known_hosts
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
RUN --mount=type=ssh git clone -b master git@git.mysite.com:user/project.git /srv/username/project
ENV PYTHONPATH "${PYTHONPATH}:/srv/username/project"
CMD /usr/sbin/service ssh restart && cd /srv/username/project && git pull origin dev && git checkout dev \
&& /srv/username/project/script.py

为什么我现在必须配置最新的用户?

我没有找到错误发生的原因,但我找到了消除它的解决方案。 我没有克隆master然后拉分支,而是直接克隆了我想使用的分支。

克隆线现在是:

RUN --mount=type=ssh git clone --single-branch -b dev git@git.mysite.com:user/project.git /srv/username/project

注意使用 -b dev--single-branch 来仅克隆指定的分支。

我仍然不确定为什么错误发生在一种情况下而另一种情况下却没有。可能是因为 --mount=type=ssh 不能在最后 CMD 中使用,但在这两种情况下它应该都失败了。