自建GitLab CI用docker:dind镜像pip安装包遇SSL证书验证失败
问题分析与解决方案
我之前在GitLab CI用docker:dind镜像时也踩过几乎一模一样的坑,给你梳理下问题根源和解决办法:
1. docker-compose安装失败的核心原因
你用的py-pip是Python2版本的pip,但docker-compose早在1.27.0版本就彻底停止支持Python2了,再加上Python2本身已经完全终止维护,旧版pip处理新包依赖时会触发各种兼容性报错,这就是你看到回溯信息的根本原因。
2. SSL证书验证失败的原因
docker:dind基于Alpine Linux,默认镜像里缺少完整的CA根证书包,导致pip访问PyPI的HTTPS链接时无法验证服务器证书,最终抛出SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)。
完整修复步骤
直接把你的安装命令替换成下面的内容即可:
# 安装Python3版本的pip + 系统CA证书包 apk add --no-cache py3-pip ca-certificates # 升级pip到最新版本(可选,但能规避很多旧版本的bug) pip3 install --upgrade pip # 安装docker-compose pip3 install docker-compose
额外说明
- 用
py3-pip替代py-pip:Python3是当前主流环境,docker-compose完全兼容,且新版pip能更好地处理现代包的依赖关系。 - 安装
ca-certificates:这个包会将常用的根证书添加到系统信任库,直接解决SSL证书验证失败的问题。 - 如果你的GitLab Runner处于代理网络环境,还需要确保正确配置
HTTP_PROXY/HTTPS_PROXY环境变量,但公共网络下上面的步骤基本就能解决所有问题。
内容的提问来源于stack exchange,提问作者Rukeith
相关产品推荐
相关产品推荐

