本地执行docker build命令失败,apk安装redis报错如何解决?
问题根因
本次构建失败的核心原因是Alpine镜像内置的软件源SSL证书校验失败,导致apk包管理器无法正常拉取软件源索引文件,最终无法定位到redis安装包。常见触发场景如下:
- 本地网络存在代理/防火墙规则,拦截了Alpine官方源的SSL请求
- 使用的Alpine 3.14版本较旧,内置根证书已过期
- 宿主机系统时间异常,导致SSL证书有效期校验不通过
修复方案
按优先级尝试以下操作即可解决问题:
方案1:更新根证书修复校验问题
修改Dockerfile的RUN语句,先更新系统根证书再安装redis:
# Use an exisiting docker image as a base FROM alpine # Download and install a dependency RUN apk add --update --no-cache ca-certificates && update-ca-certificates \ && apk add --update redis #Tell the image what to do when it starts as a container CMD ["redis-server"]
如果仍报错可临时增加跳过证书校验参数:RUN apk add --update --no-cache --allow-untrusted ca-certificates && update-ca-certificates && apk add --update redis
方案2:替换为国内Alpine软件源
如果是网络访问海外源不稳定导致的问题,直接替换为国内源即可:
FROM alpine # 替换为阿里云Alpine源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ && apk add --update redis CMD ["redis-server"]
方案3:升级基础镜像版本
如果是旧版本Alpine证书过期导致,直接使用更高版本的Alpine镜像即可,修改FROM语句:FROM alpine:3.20
方案4:检查本地环境配置
如果上述方案都无效,排查本地配置:
- 确认Docker代理配置正确,没有错误拦截HTTPS请求
- 确认宿主机系统时间和时区正确,时间偏差过大也会导致SSL校验失败
内容的提问来源于stack exchange,提问作者gomze
相关产品推荐
相关产品推荐

