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

Docker构建失败退出码139:Node线程创建断言失败求助

问题排查与解决方法

核心原因分析

该错误是Node.js尝试创建Worker线程时uv_thread_create调用失败触发的断言错误,exit code 139通常关联资源限制、环境兼容性问题,而非单纯内存不足。

具体解决步骤

  • 固定Node.js镜像版本
    避免使用node:latest(会自动拉取最新版本,可能与宿主机内核/libc不兼容),替换为之前运行正常的具体版本,比如LTS版本:

    sh 'docker run --rm --name "node${commitIdLong}" -v "$(pwd)":/app -w /app node:20-bookworm /bin/bash -c "npm install; npm run build --prod --loglevel verbose"'
    
  • 放开Docker容器的线程/进程限制
    给容器添加进程数限制参数,避免因线程配额不足导致创建失败:

    sh 'docker run --rm --name "node${commitIdLong}" --ulimit nproc=65535:65535 -v "$(pwd)":/app -w /app node:latest /bin/bash -c "npm install; npm run build --prod --loglevel verbose"'
    
  • 禁用Node.js Worker线程
    通过环境变量强制Node不使用Worker线程,绕过线程创建逻辑:

    sh 'docker run --rm --name "node${commitIdLong}" -e NODE_NO_WORKER_THREADS=1 -v "$(pwd)":/app -w /app node:latest /bin/bash -c "npm install; npm run build --prod --loglevel verbose"'
    
  • 检查宿主机资源限制
    在Jenkins所在宿主机执行以下命令,确认进程/线程配额足够:

    # 查看当前用户的进程数限制
    ulimit -u
    # 查看系统最大线程数
    cat /proc/sys/kernel/threads-max
    

    如果数值过低,需调整系统参数(比如修改/etc/security/limits.conf或内核参数)。

  • 清理并重新拉取镜像
    若镜像存在损坏或缓存问题,执行以下命令更新:

    docker rmi node:latest
    docker pull node:latest
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:17