提问人:Jesús López 提问时间:9/1/2023 最后编辑:Jesús López 更新时间:11/23/2023 访问量:12031
使用 nodesource 安装脚本在 docker 容器上安装 nodejs 时出现弃用警告
Deprecation warning when installing nodejs on docker container using nodesource install script
问:
我曾经在 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) ...
我该如何解决?
答:
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
这就是我正在做的事情
评论