如何在 Dockerfile 中为 ruby:3.0.1-alpine3.13 图像将节点版本设置为 16.x

How to set node version to 16.x for ruby:3.0.1-alpine3.13 image in Dockerfile

以下是我为其中一个应用程序设置的 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 \
&& rm -rf /var/cache/apk/* \
&& 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 构建容器。

我已经搜索并尝试了各种方法来使用 nvm、n 等在 Dockerfile 中设置节点版本,但无济于事。

是否有简单的方法来设置和更改此节点版本?

谢谢

要在 Alpine 3.14 上安装 Node.js 16.x,请安装 nodejs-current 软件包:

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

只需将包裹列表中的 nodejs 替换为 nodejs-current
当前 nodejs-current 版本为 16.6.0-r0.