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

如何在Dockerfile中通过FOSS安装Node.js?Ubuntu镜像构建报错求助

问题

我正尝试基于Ubuntu为代码仓库构建Docker镜像,当前Dockerfile内容如下:

FROM harbor.global.lmco.com/lmc.eo.swf.efoss/ubuntu-22.04:v1.11.3
FROM node:8.2
FROM ubuntu:18.04

# WORKDIR /

ARG EFOSS_USER
ARG EFOSS_TOKEN
ARG http_proxy=http://proxy-zsgov.global.lmco.com:80
ARG https_proxy=http://proxy-zsgov.global.lmco.com:80
ARG no_proxy=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"
ARG HTTP_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG HTTPS_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG NO_PROXY=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"

ARG REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

RUN efoss apt-get install --yes --no-install-recommends

运行脚本时出现错误:

Step 15/15 : RUN efoss apt-get install --yes --no-install-recommends
 ---> Running in 3d8deda25bd4
/bin/sh: 1: efoss: not found
The command '/bin/sh -c efoss apt-get install --yes --no-install-recommends' returned a non-zero code: 127
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 127

我还尝试过RUN apt-get install nodejs、RUN apt-get install node.js等指令,但均未成功。

注:eFoss是可搜索的集中式FOSS仓库,所有员工无需业务审批即可使用已获批开源软件。

解决方案

核心问题拆解

  1. 多FROM指令覆盖基础镜像:Dockerfile里连续用了三个FROM,最终只会以最后一个ubuntu:18.04作为基础镜像,前面的EFOSS维护版Ubuntu和Node.js镜像都会被直接忽略——这就是efoss命令找不到的根本原因,因为纯净Ubuntu镜像里没装这个工具。
  2. 纯净Ubuntu无法访问EFOSS仓库:直接用apt-get安装失败,是因为默认源不是EFOSS的仓库,公司内部环境下无法通过公网源获取软件。

修复步骤

1. 修正基础镜像,保留EFOSS维护的Ubuntu

删掉多余的FROM指令,只留EFOSS提供的镜像作为基础,确保能使用efoss工具:

FROM harbor.global.lmco.com/lmc.eo.swf.efoss/ubuntu-22.04:v1.11.3

如果需要Node.js环境,不要用第二个FROM,而是通过efoss命令安装。

2. 确保efoss命令正常使用

EFOSS维护的镜像应该预装了efoss客户端,直接用它来更新源并安装软件即可:

# 更新EFOSS源缓存
RUN efoss update
# 安装Node.js(可指定版本,比如efoss apt-get install nodejs=8.2.*)
RUN efoss apt-get install --yes --no-install-recommends nodejs

3. 保留代理与证书配置

原有的代理和证书ARG配置要保留,确保能正常访问内部EFOSS仓库:

ARG EFOSS_USER
ARG EFOSS_TOKEN
ARG http_proxy=http://proxy-zsgov.global.lmco.com:80
ARG https_proxy=http://proxy-zsgov.global.lmco.com:80
ARG no_proxy=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"
ARG HTTP_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG HTTPS_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG NO_PROXY=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"

ARG REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

4. 完整修复后的Dockerfile示例

FROM harbor.global.lmco.com/lmc.eo.swf.efoss/ubuntu-22.04:v1.11.3

ARG EFOSS_USER
ARG EFOSS_TOKEN
ARG http_proxy=http://proxy-zsgov.global.lmco.com:80
ARG https_proxy=http://proxy-zsgov.global.lmco.com:80
ARG no_proxy=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"
ARG HTTP_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG HTTPS_PROXY=http://proxy-zsgov.global.lmco.com:80
ARG NO_PROXY=".lmco.com,.us.lmco.com,.lmms.lmco.com,.ssc.lmco.com,.gitlab.us.lmco.com,.pages.gitlab.us.lmco.com,.us-gov-west-1.amazonaws.com"

ARG REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ARG SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

WORKDIR /app

RUN efoss update && \
    efoss apt-get install --yes --no-install-recommends nodejs

额外提示

  • 如果需要特定版本的Node.js(比如8.2),可以在安装时指定版本号,格式为efoss apt-get install nodejs=8.2.*,具体版本号可通过EFOSS仓库查询。
  • 不要随意在Dockerfile里多次使用FROM,除非是明确的多阶段构建场景,否则只会保留最后一个镜像的内容,前面的镜像都会被丢弃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:19:56