git - 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
解决方案
问题不在于 git 的代理设置。由于 GnuTLS,Git 在 ubuntu LTS 中无法正常工作。只有在某些情况下在代理后面使用 Ubuntu 时才会失败。唯一的解决方案是使用 OpenSSL 而不是 GnulTLS 从源代码重建 git。
这似乎是解决问题的一种非常复杂的方法,但在此之前我尝试了很多不同的解决方案,但都没有奏效。这是我尝试过的东西的摘要:
- Linux 环境变量
- git 和 Linux 的证书 + 代理设置
- Docker 设置、环境和状态守恒
- 重新安装 Git 和 GnuTLS
- 将 ubuntu 更新到 ubuntu 18
- 使用Wget克隆,卷曲克隆到容器外并复制
推荐阅读
- excel - Excel Multiple Criteria
- python - Python List vs Array performance and profiles
- python - python3 在强度长度计算中是否会比 python2 失去性能?
- java - Intellij cannot find Maven Dependencies in pom.xml
- mysql - mysql数据库在杀死PID后没有停止
- python - Create distinct sets from given list of integers
- eiffel - Eiffel: How do I compare the type of an object to a given type?
- php - php validation to check text field is not working
- java - 在android中将String转换为Integer时出错
- java - 同步任务的正确方法,而不是一直锁定对象?