目录
🚀解决Docker构建APT下载缓慢与证书校验失败问题:使用阿里云HTTP源加速方案
尝试2:手动写入 Tuna 清华源 + 继续使用 HTTPS
🚀解决Docker构建APT下载缓慢与证书校验失败问题:使用阿里云HTTP源加速方案
📌背景
在构建如下多阶段 Docker 镜像时:
FROM base
COPY --from=build /app/dist /app/dist
COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=go-base /app/sharedLibs/go-html-to-md/html-to-markdown.so /app/sharedLibs/go-html-to-md/html-to-markdown.so
COPY --from=rust-base /app/sharedLibs/html-transformer/target/release/libhtml_transformer.so /app/sharedLibs/html-transformer/target/release/libhtml_transformer.so
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
apt-get update
卡在下载源,或出现如下错误:
Certificate verification failed: The certificate is NOT trusted.
Could not handshake: Error in the certificate verification.
这是因为:
-
基础镜像为
slim
版,不包含ca-certificates
-
默认使用
deb.debian.org
源,在国内网络环境下访问缓慢 -
若强行替换为
https://mirrors.tuna.tsinghua.edu.cn
之类 HTTPS 源,会触发证书校验问题
🛠️失败尝试
尝试1:使用 sed
替换 Debian 源
RUN sed -i 's|http://deb.debian.org|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
结果:
sed: can't read /etc/apt/sources.list: No such file or directory
说明基础镜像太“瘦”,/etc/apt/sources.list
文件根本不存在。
尝试2:手动写入 Tuna 清华源 + 继续使用 HTTPS
RUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main ..." > /etc/apt/sources.list
结果:
Certificate verification failed: The certificate is NOT trusted.
原因:镜像缺失 CA 证书包,导致无法校验 HTTPS 源证书。
✅最终解决方案:使用阿里云 HTTP 源(不校验证书)
最稳妥的方式:使用阿里云 http://mirrors.aliyun.com
源,完全绕过证书问题,适用于 CI 构建和容器快速搭建场景。
✅ 推荐写法:
RUN echo "deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware\n\
deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware\n\
deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free non-free-firmware" \
> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y git \
&& rm -rf /var/lib/apt/lists/*
💡补充说明
-
若希望继续使用
https
,需提前安装ca-certificates
包:RUN apt-get update && apt-get install -y ca-certificates
-
然而在一些网络隔离或 CI/CD 环境中,HTTP 更加兼容稳定。
📈总结
在国内 Docker 构建过程中,默认的 deb.debian.org
源经常访问缓慢甚至失败。使用 mirrors.aliyun.com
的 HTTP 源,配合完整的 /etc/apt/sources.list
替换操作,可以大幅提升构建速度,避免不必要的证书报错。建议在基础镜像中预设国内源或构建阶段统一替换,提升稳定性与效率。