0

我有一个 Docker 文件,其基本映像为“python:alpine”

我需要在容器中安装 python 和 node.js,所以我从 python 图像开始。

如何在不指定版本的情况下在容器中安装最新版本的 node.js(node.js 的“当前最新功能”)?

在这篇文章的时候,

RUN apk -v --no-cache --update add nodejs

将安装“为大多数用户推荐的 LTS”,而不是“当前最新功能”

参考: https ://nodejs.org/en

在这篇文章的时候:

  • “为大多数用户推荐 LTS”: 14.7.6
  • “当前最新功能”: 16.9.1

在此示例中,我想安装16.9.1而不是14.7.6,但不在我的 Dockerfile 中指定特定版本


这样做的目的是降低对 Dockerfile 的维护,让它始终拉取最新的“当前 - 最新功能版本”,而无需检查 node.js 站点的版本号,并将其硬编码到 Dockerfile 中。

4

1 回答 1

1

看到这个

“edge”是Alpine Linux当前开发树的名称。它由一个名为“edge”的 APK 存储库组成,包含所有可用 Alpine Linux 软件包的最新版本。这些软件包会定期更新。

并且,nodejs-current是最新功能版本的包名称,因此您可以使用下一个:

apk add --no-cache nodejs-current --repository="http://dl-cdn.alpinelinux.org/alpine/edge/community"

整个运行:

/ # apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
v3.14.2-38-g27e4ada230 [https://dl-cdn.alpinelinux.org/alpine/v3.14/main]
v3.14.2-36-g70ff2140e8 [https://dl-cdn.alpinelinux.org/alpine/v3.14/community]
OK: 14938 distinct packages available
/ # apk search --no-cache nodejs-current --repository="http://dl-cdn.alpinelinux.org/alpine/edge/community"
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
nodejs-current-doc-16.9.1-r0
nodejs-current-16.9.1-r0
nodejs-current-dev-16.9.1-r0
/ # apk add --no-cache nodejs-current --repository="http://dl-cdn.alpinelinux.org/alpine/edge/community"
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
(1/8) Installing ca-certificates (20191127-r5)
(2/8) Installing brotli-libs (1.0.9-r5)
(3/8) Installing c-ares (1.17.2-r0)
(4/8) Installing libgcc (10.3.1_git20210424-r2)
(5/8) Installing nghttp2-libs (1.43.0-r0)
(6/8) Installing libstdc++ (10.3.1_git20210424-r2)
(7/8) Installing libuv (1.41.0-r0)
(8/8) Installing nodejs-current (16.9.1-r0)
Executing busybox-1.33.1-r3.trigger
Executing ca-certificates-20191127-r5.trigger
OK: 74 MiB in 22 packages
/ # node -v
v16.9.1
于 2021-09-16T07:07:21.887 回答