如何在Dockerfile中通过Nexus代理仓库下载安装Node.js
Dockerfile通过公司Nexus安装Node.js的实现方案
常见疑问解答
首先回答你问的是否可以直接替换https://deb.nodesource.com/为公司Nexus地址:
不可以直接替换。原命令调用的
setup_10.x脚本内部硬编码了nodesource官方源地址,执行时仍会请求官方服务器,不符合合规要求。
以下两种方案均适配你使用的Nexus 3.30.1 PRO版本:
方案一:配置APT代理源(推荐,适合多版本、多场景使用)
第一步:Nexus端配置代理仓库
- 登录Nexus管理后台,进入「Repository → Repositories」,点击「Create repository」,选择 apt (proxy) 类型
- 按以下参数填写配置:
- 仓库名称:自定义,例如
apt-nodesource-10.x - Remote storage:填写官方源地址
https://deb.nodesource.com/node_10.x - Distribution:填写
nodistro - 勾选「Flat repository」选项
- 其余配置保持默认,点击保存即可
- 仓库名称:自定义,例如
- 如果公司运维已经提前配置好对应的APT代理仓库,可直接跳过该步骤,找运维获取代理地址即可
第二步:修改Dockerfile配置
# 提前安装apt HTTPS依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ apt-transport-https \ ca-certificates \ gnupg2 \ && rm -rf /var/lib/apt/lists/* # 导入nodesource GPG密钥(也可将密钥上传到Nexus托管,从Nexus地址拉取) RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - # 写入Nexus APT代理源配置,将示例地址替换为实际的Nexus代理地址 RUN echo "deb [trusted=yes] https://company-nexus.com/repository/apt-nodesource-10.x/ nodistro main" > /etc/apt/sources.list.d/nodesource.list # 安装Node.js RUN apt-get update && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/*
方案二:直接托管Node.js安装包(适合版本固定的场景)
如果不需要维护多个Node.js版本,可将对应版本的Node.js deb安装包上传到Nexus的raw类型仓库,直接在Dockerfile中下载安装即可:
RUN curl -sL https://company-nexus.com/repository/raw-public/nodejs/10.24.1/nodejs_10.24.1-1nodesource1_amd64.deb -o nodejs.deb \ && dpkg -i nodejs.deb \ # 自动安装缺失依赖 && apt-get install -f -y --no-install-recommends \ && rm -f nodejs.deb \ && rm -rf /var/lib/apt/lists/*
注意事项
- 若Nexus使用自签名HTTPS证书,需要提前将公司根证书导入到镜像的
/usr/local/share/ca-certificates/目录,执行update-ca-certificates后再请求Nexus地址,避免证书校验失败 - 若Nexus仓库开启了认证,需要在apt源配置或者curl命令中添加认证信息,注意不要硬编码密码,可以通过构建参数传递
内容的提问来源于stack exchange,提问作者Mansi Sharma
相关产品推荐
相关产品推荐

