"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
中使用,但在这两种情况下它应该都失败了。
我的 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
中使用,但在这两种情况下它应该都失败了。