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

Docker构建失败:执行apt-get install npm返回非零代码1,无法安装forever

解决Docker构建时apt-get install npm失败的问题

我一眼就发现了问题的核心——你在Dockerfile里执行apt-get install npm的时候没加-y参数!

为什么会失败?

Docker的构建环境是非交互式的,当apt-get需要确认是否要安装依赖包时,它没办法像你在本地Ubuntu终端那样收到你的手动确认(比如输入y),所以会直接退出并返回非零错误码1。而你在本地执行时是交互式环境,自然能顺利完成安装。

快速修复方案

把Dockerfile里的第三个RUN命令加上-y参数,让apt-get自动确认所有安装操作:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y software-properties-common
RUN apt-get install -y nodejs
RUN apt-get install -y npm  # 这里加上-y参数
RUN npm install forever -g

更优的Dockerfile写法

另外,在Docker里最好把相关的apt命令合并到同一个RUN中,这样可以减少镜像层数,还能避免因为层缓存导致的源过期问题。同时清理apt缓存可以大幅减小镜像体积:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
    software-properties-common \
    nodejs \
    npm && \
    rm -rf /var/lib/apt/lists/*  # 清理apt缓存,减小镜像体积
RUN npm install forever -g

进阶优化:避免老旧版本问题

Ubuntu 14.04官方源里的nodejs和npm版本都比较老旧,后续可能遇到兼容性问题。如果想使用更新的版本,可以通过NodeSource的PPA来安装:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
    software-properties-common \
    curl && \
    # 添加NodeSource的PPA(这里选的是适配Ubuntu 14.04的Node.js 6.x)
    curl -sL https://deb.nodesource.com/setup_6.x | bash - && \
    apt-get install -y nodejs && \
    rm -rf /var/lib/apt/lists/*
# NodeSource的nodejs包已经包含了npm,无需单独安装
RUN npm install forever -g

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:30:29