Как установить версию узла 16.x для ruby:3.0.1-изображение alpine3.13 в файле Dockerfile

#node.js #docker #dockerfile #alpine

Вопрос:

Ниже приведены Dockerfile настройки, которые я настроил для одного из своих приложений:

 FROM ruby:3.0.1-alpine3.13

ENV APP_PATH /var/app
ENV BUNDLE_VERSION 2.2.17
ENV RAILS_PORT 3000
ENV LAUNCHY_DRY_RUN true
ENV BROWSER /dev/null

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

RUN chmod  x /usr/local/bin/docker-entrypoint.sh

# install dependencies for M1 Macs
RUN apk add --update --no-cache curl py-pip python2 python3

# install dependencies for application
RUN apk -U add --no-cache 
make 
gcc 
build-base 
git 
postgresql-dev 
postgresql-client 
libxml2-dev 
libxslt-dev 
nodejs 
npm 
yarn 
tzdata 
amp;amp; rm -rf /var/cache/apk/* 
amp;amp; mkdir -p $APP_PATH


RUN gem install bundler --version "$BUNDLE_VERSION"

# navigate to app directory
WORKDIR $APP_PATH

COPY Gemfile Gemfile.lock ./
COPY package.json yarn.lock ./

RUN bundle check || bundle install --jobs=8
RUN yarn install --check-files

COPY . .

EXPOSE $RAILS_PORT
 

По умолчанию для версии узла устанавливается 14.17.4 значение . Раньше это работало , когда я устанавливал значение ядра узла в package.json на 14.x , но так как я изменил значение ядра узла 16.x на, я получаю эту ошибку, когда пытаюсь создать контейнер с помощью этого файла Dockerfile.

Я искал и пробовал различные подходы для установки версии узла в файле Dockerfile с использованием nvm, n и т. Д., Но Безрезультатно.

Есть ли простой способ установить и изменить версию этого узла?

Спасибо

Комментарии:

1. В чем заключается ошибка, которую вы получаете?

2. #15 1.335 yarn install v1.22.10 #15 1.749 [1/5] Validating package.json... #15 1.757 error @: The engine "node" is incompatible with this module. Expected version "16.x". Got "14.17.4" #15 1.776 error Found incompatible module.

Ответ №1:

Для установки Node.js 16.x в Alpine 3.14 установите nodejs-current пакет:

https://pkgs.alpinelinux.org/package/v3.14/community/x86_64/nodejs-current

Просто замените nodejs на nodejs-current в вашем списке пакетов.
Текущая nodejs-current версия-16.6.0-r0.