我正在尝试在 node:alpine
映像(最新标记)中安装特定版本的 npm 包,因此这是我在 Dockerfile 中指定的内容:
编辑(这是完整的 Dockerfile):
FROM node:alpine as build-stage
ARG SONAR_VERSION=4.6.0.2311
RUN apk add --no-cache zip unzip
RUN wget -c https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_VERSION-linux.zip
RUN unzip -q sonar-scanner-cli-$SONAR_VERSION-linux.zip
RUN rm sonar-scanner-cli-$SONAR_VERSION-linux.zip
# Adding the $install_directory/bin directory to path
RUN cd sonar-scanner-$SONAR_VERSION-linux
RUN echo $PWD
RUN export PATH="$PATH:/$PWD/bin"
RUN npm i -g eslint@6.7.2
RUN npm i -g eslint-plugin-vue --save-dev
但是,当我运行并执行构建的镜像时,安装的 eslint 版本是最新的,而不是我在 Dockerfile 中指定的版本。
来自 npm list -g
的结果:
/ # npm list -g
/usr/local/lib
+-- eslint-plugin-vue@7.9.0
+-- eslint@7.25.0
`-- npm@7.11.2
如果我在容器内运行 npm i -g eslint@6.7.2
,npm list -g
中的版本将与我指定的完全相同。
出现这种情况的原因是什么?