如何在基于 Debian 的镜像 (Dockerfile) 中安装 Node.js 版本 16.xx?(为什么这么难?)

use*_*542 5 apt-get debian-based node.js dockerfile debian-buster

日期: 2021 年 10 月 5 日星期二

Node 10.x于2018-04-24发布(但这是使用 apt-get 时的默认版本)


我需要在运行容器中安装 Python 和 Node.js。我可以使用以下命令在容器中获取最新版本的 python:

FROM python:alpine

或者

FROM python:buster <== 基于 Debian


如何在 Debian 上(在 Docker 容器中)安装最新版本的 node.js (16.10.0)

当我这样做时:

FROM python:buster

RUN apt-get update && \
  apt-get install -y \
    nodejs npm
Run Code Online (Sandbox Code Playgroud)

我得到这些版本的节点:

节点:10.24.0

npm 5.8.0

当在容器中运行时,给出一个关于不再不受支持的长声明。

“apt-get”从中提取的软件包存储库怎么了,它不会安装更高版本的节点(14.x 或更高版本)?


如果我从:

FROM python:alpine

and include these lines
RUN apk -v --no-cache --update add \
    nodejs-current npm
Run Code Online (Sandbox Code Playgroud)

我将获得 Node 16.x版本,这让一切变得简单。我不需要做任何其他事情。

是否有与python:buster等效的东西(基于 Debian)

我真的希望在我的Dockerfile中有一两行代码,而不是一页包含十几个命令的指令来简单地获取图像中的节点。


我将不胜感激任何经过测试/证明的答复。我相信其他很多人也有同样的问题。关于这个主题的其他 stackoverflow 文章很复杂,并且没有提供我希望找到 pytyon:alpine 可用的简单解决方案

我需要python:debian而不能在这个用例中使用 python:alpine是有原因的,否则我会选择后者。


有没有办法引起软件包存储库维护者的注意,以向我展示如何将最新版本(14..16)获取到 apt-get 存储库中?

看来很多人都遇到了这个问题。

ass*_*100 8

您可以使用:

FROM python:buster

RUN apt-get update && \
 apt-get install -y \
    nodejs npm

RUN curl -fsSL https://deb.nodesource.com/setup_current.x | bash - && \
 apt-get install -y nodejs

Run Code Online (Sandbox Code Playgroud)