首页 > 解决方案 > Git无法在http代理后面的dockerfile中工作

问题描述

几天来,我一直在尝试解决这个问题,但没有成功。

设置如下:一切都在公司防火墙后面运行。我有一个带有 ubuntu 映像的 dockerfile。防火墙后一切正常,我已经设置了证书和代理设置。唯一不工作的是 git。我无法克隆任何东西。

我已经像这样设置了证书和代理:

RUN git config --global http.proxy http://165.225.80.41:80 RUN git config --global http.sslCAPath /usr/local/share/ca-certificates/abcd/abcd.crt
RUN git config --global http.sslCAInfo /usr/local/share/ca-certificates/abcd/abcd.crt
RUN git clone https://github.com/asd/asd.git

这是我运行它时得到的:

Step 39/156 : RUN git clone https://github.com/asd/asd.git
 ---> Running in e20ef1c7ac5d
Cloning into 'asd'...
error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated

标签: gitdockerhttpssl-certificate

解决方案


问题不在于 git 的代理设置。由于 GnuTLS,Git 在 ubuntu LTS 中无法正常工作。只有在某些情况下在代理后面使用 Ubuntu 时才会失败。唯一的解决方案是使用 OpenSSL 而不是 GnulTLS 从源代码重建 git。

这似乎是解决问题的一种非常复杂的方法,但在此之前我尝试了很多不同的解决方案,但都没有奏效。这是我尝试过的东西的摘要:

  • Linux 环境变量
  • git 和 Linux 的证书 + 代理设置
  • Docker 设置、环境和状态守恒
  • 重新安装 Git 和 GnuTLS
  • 将 ubuntu 更新到 ubuntu 18
  • 使用Wget克隆,卷曲克隆到容器外并复制

推荐阅读