Из командной строки (apk —добавить обновление), как установить node.js «Текущая версия последних функций «вместо» LTS рекомендуется для большинства пользователей»?

#node.js #docker #dockerfile #apk #alpine

Вопрос:

У меня есть файл 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


Цель этого состоит в том, чтобы снизить обслуживание файла настройки, чтобы он всегда извлекал последнюю «последнюю версию функций», не проверяя node.js сайт для номера версии и жесткого кодирования этого в файл настройки.

Ответ №1:

Видишь это:

«край» — это название, данное текущему дереву разработки Alpine Linux. Он состоит из репозитория APK под названием «edge» и содержит последнюю версию всех доступных пакетов 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