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

如何在无网络的Ubuntu Docker镜像中安装Node 16.x、npm及@stoplight/spectral-cli

离线安装npm及@stoplight/spectral-cli(Ubuntu Docker环境)

一、提前准备离线资源(在有网络的机器上操作)

1. 获取对应版本的npm包

Node 16.x系列默认配套npm 8.x版本(比如Node 16.20.0对应npm 8.19.4),直接下载对应版本的npm tar.gz包。

2. 打包@stoplight/spectral-cli离线包

有两种方式获取完整的离线依赖包:

  • 方式一:单独打包spectral-cli
    在有网环境执行:
    npm pack @stoplight/spectral-cli@<指定版本> # 比如@6.11.0,不指定则取最新
    
    执行后会生成类似stoplight-spectral-cli-6.11.0.tgz的文件,包含spectral-cli及其所有依赖源码。
  • 方式二:打包全局安装后的完整模块
    先在有网环境全局安装spectral-cli:
    npm install -g @stoplight/spectral-cli
    
    找到npm全局模块路径(执行npm root -g,通常为/usr/local/lib/node_modules),然后打包@stoplight目录:
    tar -czf spectral-cli-offline.tar.gz -C $(npm root -g) @stoplight
    

将下载好的npm包、spectral离线包,以及你已准备的Node 16安装包,全部放到Docker构建上下文目录(和Dockerfile同目录)。

二、Dockerfile中完成离线安装

1. 安装npm

假设你已完成Node 16的安装,添加以下步骤到Dockerfile:

# 创建npm全局模块目录(避免权限问题)
RUN mkdir -p /usr/local/lib/node_modules
# 解压npm包到全局模块目录,--strip-components=1去掉包的外层目录
RUN tar -xzf /tmp/npm-8.19.4.tgz -C /usr/local/lib/node_modules --strip-components=1
# 建立软链接到系统PATH,让npm命令全局可用
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
# 验证安装
RUN npm -v

2. 安装@stoplight/spectral-cli

根据你之前打包的方式选择对应步骤:

  • 如果用方式一的单独包:
    # 全局安装离线包
    RUN npm install -g /tmp/stoplight-spectral-cli-6.11.0.tgz
    
  • 如果用方式二的完整模块包:
    # 解压到全局模块目录
    RUN tar -xzf /tmp/spectral-cli-offline.tar.gz -C /usr/local/lib/node_modules
    # 建立软链接到系统PATH
    RUN ln -s /usr/local/lib/node_modules/@stoplight/spectral-cli/bin/spectral.js /usr/local/bin/spectral
    

最后添加验证命令:RUN spectral --version

完整Dockerfile示例

FROM ubuntu:latest

# 复制离线资源到临时目录
COPY node-v16.20.0-linux-x64.tar.xz /tmp/
COPY npm-8.19.4.tgz /tmp/
COPY spectral-cli-offline.tar.gz /tmp/

# 安装Node 16
RUN tar -xJf /tmp/node-v16.20.0-linux-x64.tar.xz -C /usr/local --strip-components=1
RUN ln -s /usr/local/bin/node /usr/bin/node
RUN node -v

# 安装npm
RUN mkdir -p /usr/local/lib/node_modules
RUN tar -xzf /tmp/npm-8.19.4.tgz -C /usr/local/lib/node_modules --strip-components=1
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
RUN npm -v

# 安装spectral-cli
RUN tar -xzf /tmp/spectral-cli-offline.tar.gz -C /usr/local/lib/node_modules
RUN ln -s /usr/local/lib/node_modules/@stoplight/spectral-cli/bin/spectral.js /usr/local/bin/spectral
RUN spectral --version

# 清理临时文件
RUN rm -rf /tmp/*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:20