在 alpine linux 上使用 npm 安装最新 nodejs 的最佳方法是什么

在 alpine linux 上使用 npm 安装最新 nodejs 的最佳方法是什么

我正在尝试基于 alpine linux 构建自己的 docker 容器,并且需要在该容器中添加多个服务(是的,这不是推荐的最佳实践,但目前我的组织 devops 有点落后,并要求为我的自定义图像使用单个 dockerfile)。

我正在检查文章中找到了在 alpine linux 上使用 npm 安装最新版本的 nodejs 的方法。但是,这个讨论中似乎没有提供apk add nodejs@6或提供类似的内容。

此外,Alpine Linux 的存储库中似乎没有最新版本的 NodeJS(V 8.X)这里

那么我是否必须从源代码安装 nodejs?但与仅从 alpine repo 安装相比,此选项非常慢。

编辑:

在 dockerfile 中添加 nodejs-current 又出现了另一个问题

步骤...:运行 apk update && apk add nodejs-current

---> 正在运行 e430b4d279e5 获取http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz 拿来 http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz 拿来 http://nl.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz v3.4.6-213-gb6db4bd [http://dl-cdn.alpinelinux.org/alpine/v3.4/main] v3.4.6-160-g14ad2a3 [http://dl-cdn.alpinelinux.org/alpine/v3.4/community] v3.6.0-3765-g46dd4472f4 [http://nl.alpinelinux.org/alpine/edge/testing]确定:8679 个不同的包可用错误:无法满足的约束:nodejs-current(缺失):world[nodejs-current] 所需

答案1

我们提供两个 nodejs 包:

  • nodejs在主 LTS 版本中,
  • nodejs-当前在社区中 — 当前版本,上游称之为当前版本。

因此,如果您想要最新版本,请通过运行以下命令安装 nodejs-current:

apk add nodejs-current

目前它是 v3.6 中的 7.10.1(稳定分支)或边缘中的 8.5.0(不稳定/滚动分支)。

我们不使用@N类似的后缀nodejs@6,它不是有效的包名称。

答案2

对我来说最简单的方法是使用特定版本的 Alpine。

在我的用例中,我使用了php:7.4-fpm-alpine图像。并且必须将其更新才能php:7.4-fpm-alpine3.13使用 Node 14。

php:7.4-fpm-alpine3.13 - Node 14
php:7.4-fpm-alpine3.12 - Node 12

Dockerfile 示例:

FROM php:7.4-fpm-alpine3.13

RUN apk update && apk add nodejs npm

相关内容