【发布时间】:2021-11-11 10:18:57
【问题描述】:
问题
我有一个使用 访问令牌 和 客户端证书 的 git 配置。在构建 docker 映像时,我需要使用相同的 git 配置(以访问所有必需的源)。
我所做的事情现在在Dockerfile 中是这样的,它对我有用:
(...)
ARG SRC="/src"
RUN mkdir ${SRC}
# copying cert files inside docker image
COPY certificate.crt ${SRC}
COPY certificate.key ${SRC}
# configuring the same git settings inside
RUN git config --global user.name "${USER_NAME}"
RUN git config --global user.email "${EMAIL}"
RUN git config --global url."https://${ACCESS_TOKEN}@git_domain.com/".insteadOf "ssh://git@git_domain.com/"
RUN git config --global http."https://git_domain.com/".sslCert "/src/certificate.crt"
RUN git config --global http."https://git_domain.com/".sslKey "/src/certificate.key"
(...)
问题是
也许有一些更“简洁”或更简单的方法?
是否可以使用现有的本地文件.gitconfig?以某种方式指定它的路径?
我发现了这个问题 Copying local git config into docker container,但 docker run 不适合。我需要做类似的事情,但使用docker build。
【问题讨论】:
-
Git 配置存储在非常简单(类似于ini)的文件中,可以很容易地手动生成。例如全局配置存储在
~/.gitconfig(见this section for details)。 -
还请记住,您可以非常轻松地读取图像的
docker history,或将.gitconfig文件复制出来,然后取回这些凭据。与证书文件类似。我建议在运行docker build之前提取应用程序源代码,并在运行时注入 TLS 密钥。 -
@JoachimSauer 好的,我知道,但接下来我该怎么做?如何在 docker 镜像中从
~/.gitconfig传递 git 配置?