You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加速ingress-nginx镜像的docker构建过程以修复nginx安全漏洞

ingress-nginx 镜像编译构建提速方案(无需大幅修改原 Dockerfile)

方案1:通过 MAKEFLAGS 环境变量注入并行编译参数

GNU Make 会默认读取环境变量 MAKEFLAGS 内的全局配置,无需修改原 Dockerfile 中的 make 命令,即可注入多线程编译参数:

  • 先开启 Docker BuildKit 提升构建整体效率(Docker 18.09+ 版本默认支持):
export DOCKER_BUILDKIT=1
  • 构建时通过 --build-arg 传递多线程参数,可直接用当前设备全部CPU核心执行编译:
docker build -t 自定义镜像名:标签 \
  --build-arg MAKEFLAGS="-j$(nproc)" \
  .

若使用低版本 Docker 无法识别未预声明的构建参数,仅需在原 Dockerfile 最开头添加一行 ARG MAKEFLAGS 即可,无其他侵入性修改。

方案2:挂载编译缓存实现多次构建提速

如果需要频繁调整代码迭代构建,可添加构建缓存挂载参数,复用之前的编译中间产物,避免每次从零开始执行编译流程:

docker build -t 自定义镜像名:标签 \
  --build-arg MAKEFLAGS="-j$(nproc)" \
  --mount type=cache,target=/tmp/nginx-build \
  .

上述命令中的target路径需对应原 Dockerfile 中 Nginx 源码的编译工作目录。

方案3:最快方案:外置编译直接替换二进制

完全跳过镜像内部编译流程,本地提前编译好修复漏洞后的 Nginx 二进制文件,再基于官方原有镜像做极小化构建,全程仅需数秒:

  1. 在本地环境编译适配镜像系统架构的 Nginx 二进制
  2. 编写极简 Dockerfile:
FROM registry.k8s.io/ingress-nginx/controller:v1.x.x # 替换为你使用的官方基础镜像版本
COPY ./本地编译好的nginx路径 /usr/sbin/nginx
# 如有其他关联依赖库也可在此处一并复制
  1. 执行构建即可:
docker build -t 自定义镜像名:标签 .

内容的提问来源于stack exchange,提问作者auggie321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:00