使用 nodesource 安装脚本在 docker 容器上安装 nodejs 时出现弃用警告

Deprecation warning when installing nodejs on docker container using nodesource install script

提问人:Jesús López 提问时间:9/1/2023 最后编辑:Jesús López 更新时间:11/23/2023 访问量:12031

问:

我曾经在 Dockerfile 中使用以下命令在基于 Debian 的容器上安装 nodejs:

RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - 
RUN apt-get install nodejs -y 

但我最近开始收到以下消息:

    => [base 3/7] RUN curl -sL https://deb.nodesource.com/setup_18.x | bash -
                               SCRIPT DEPRECATION WARNING
    ================================================================================ 
TO AVOID THIS WAIT MIGRATE THE SCRIPT Continuing in 60 seconds (press Ctrl-C to abort) ...

我该如何解决?

节点.js docker dockerfile 弃用警告

评论

0赞 Jorge Ruiz Gómez 9/1/2023
查看用于构建 docker-hub 中可用的官方镜像的官方 Node Dockerfile。github.com/nodejs/docker-node/blob/main/20/bullseye/Dockerfile

答:

12赞 Emanuele Scarabattoli 9/1/2023 #1

根据 nodesource/distributions GitHub 存储库

安装脚本:setup_XX.x 的安装脚本不再受支持,也不再需要,因为安装过程对于任何 RPM 和 DEB 发行版都很简单。

因此,要安装 node.js,您可以使用此处解释的新方法

安装说明 Node.js

If you're root, you could just ommit the sudo

下载并导入 Nodesource GPG 密钥

sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings  
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

创建 deb 存储库

NODE_MAJOR=20  
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

Optional: NODE_MAJOR can be changed depending on the version you need.

NODE_MAJOR=16  
NODE_MAJOR=18  
NODE_MAJOR=20

运行更新和安装

sudo apt-get update sudo apt-get install nodejs -y

或者您可以使用官方的 docker 镜像 https://hub.docker.com/_/node/

45赞 Matt 9/1/2023 #2

脚本中的通知是

  This script, located at https://deb.nodesource.com/setup_X, used to
  install Node.js is deprecated now and will eventually be made inactive.

  Please visit the NodeSource distributions Github and follow the
  instructions to migrate your repo.
  https://github.com/nodesource/distributions 

  The NodeSource Node.js Linux distributions GitHub repository contains
  information about which versions of Node.js and which Linux distributions
  are supported and how to install it.
  https://github.com/nodesource/distributions

github 上的说明相当于一个 DockerfileRUN

FROM docker.io/debian:12-slim
RUN set -uex; \
    apt-get update; \
    apt-get install -y ca-certificates curl gnupg; \
    mkdir -p /etc/apt/keyrings; \
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
     | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
    NODE_MAJOR=18; \
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \
     > /etc/apt/sources.list.d/nodesource.list; \
    apt-get -qy update; \
    apt-get -qy install nodejs;

如果您想节省一些时间,由 Node.js 项目维护的映像是基于 Debian 的。docker.io/node:18

FROM docker.io/node:18-bookworm-slim

评论

2赞 drmrbrewer 10/14/2023
将这些命令与链接在一起不是更好吗,而不是因为我们不希望命令运行,除非所有以前的命令都成功?&&;
3赞 Matt 10/16/2023
set -e实现相同的效果。
0赞 drmrbrewer 10/16/2023
啊,我今天学到了一些东西,谢谢。
1赞 Garibaldy Cramer 10/22/2023 #3

根据此处的说明

 # updating nodejs
    RUN set -uex \
        && apt-get update \
        && apt-get install -y ca-certificates curl gnupg \
        && mkdir -p /etc/apt/keyrings \
        && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
         | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
        && NODE_MAJOR=18 \
        && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \
         | sudo tee /etc/apt/sources.list.d/nodesource.list \
        && apt-get update \
        && apt-get install nodejs -y;
2赞 Kiruahxh 10/31/2023 #4

假设您想要版本 18 并且您的系统使用软件包,您可以像这样安装它:DEB

curl -L https://deb.nodesource.com/nsolid_setup_deb.sh | bash -s -- 18
apt-get install nodejs -y

或者,如果您的系统使用软件包:RPM

curl -L https://rpm.nodesource.com/nsolid_setup_rpm.sh | bash -s -- 18
yum install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1

来源: https://github.com/nodesource/distributions#installation-scripts

0赞 Kavindu Chamith 11/23/2023 #5

只需使用官方节点映像,避免从包管理器重新安装包。

按如下方式使用官方节点镜像。(对于节点 18.x)

FROM node:18-bookworm-slim

评论

1赞 Jesús López 11/23/2023
如果您同时需要 .NET 和 Nodejs,该怎么办?没有两者兼而有之的官方图像。
0赞 Kavindu Chamith 12/16/2023
是的,没错。在这种情况下,您可以使用 .NET 的官方 Microsoft 映像,然后在此基础上安装 NodeJs。
0赞 Jesús López 12/16/2023
这就是我正在做的事情