Node.js Can';t使Docker节点应用程序使用最新版本的node/npm

Node.js Can';t使Docker节点应用程序使用最新版本的node/npm,node.js,docker,npm,Node.js,Docker,Npm,应用程序的早期版本使用了旧版本的node和npm: 节点v6.9.2 npm v3.10.9 Dockerfile的内容如下: from netsblox/base ADD . /netsblox WORKDIR /netsblox RUN npm install -g RUN mkdir -p src/client/dist EXPOSE 8080 CMD ["npm", "start"] from node:8.11.2 ENV ENV p

应用程序的早期版本使用了旧版本的node和npm:

节点v6.9.2 npm v3.10.9

Dockerfile的内容如下:

from netsblox/base

ADD . /netsblox
WORKDIR /netsblox
RUN npm install -g

RUN mkdir -p src/client/dist

EXPOSE 8080

CMD ["npm", "start"]
from node:8.11.2

ENV ENV production
ENV DEBUG netsblox*
ENV NETSBLOX_BLOB_DIR /blob-data

RUN apt-get update && apt-get install build-essential libgd-dev libcairo2-dev libcairo2-dev libpango1.0-dev libgd2-dev -y

RUN echo compile and install gnuplot

RUN mkdir /tmp/gnuInstall -p && cd /tmp/gnuInstall && \
wget https://downloads.sourceforge.net/project/gnuplot/gnuplot/5.2.0/gnuplot-5.2.0.tar.gz && tar -xzvf gnuplot-5.2.0.tar.gz && \
cd gnuplot-5.2.0 && ./configure && make && make install && \
cd ../.. && rm -rf gnuInstall

RUN echo finished installing gnuplot

WORKDIR /netsblox
Dockerfile.base的内容如下:

from netsblox/base

ADD . /netsblox
WORKDIR /netsblox
RUN npm install -g

RUN mkdir -p src/client/dist

EXPOSE 8080

CMD ["npm", "start"]
from node:8.11.2

ENV ENV production
ENV DEBUG netsblox*
ENV NETSBLOX_BLOB_DIR /blob-data

RUN apt-get update && apt-get install build-essential libgd-dev libcairo2-dev libcairo2-dev libpango1.0-dev libgd2-dev -y

RUN echo compile and install gnuplot

RUN mkdir /tmp/gnuInstall -p && cd /tmp/gnuInstall && \
wget https://downloads.sourceforge.net/project/gnuplot/gnuplot/5.2.0/gnuplot-5.2.0.tar.gz && tar -xzvf gnuplot-5.2.0.tar.gz && \
cd gnuplot-5.2.0 && ./configure && make && make install && \
cd ../.. && rm -rf gnuInstall

RUN echo finished installing gnuplot

WORKDIR /netsblox
但是当我跑的时候

docker build

它仍然安装节点v6.9.2 npm v3.10,日志记录如下:

npm信息使用npm@3.10.9

npm信息使用node@v6.9.2


我是否也应该在其他地方编辑node/npm版本?

netsblox/base:latest
使用nodejs 6.9.2(
docker run netsblox/base:latest node--version

docker build.
:将读取
Dockerfile
文件并进行构建。此Dockerfile中的
FROM
指令的目标是
netsblox/base:latest
。使用的节点版本是6.9.2,这是有道理的

要解决此问题,请使用
Dockerfile.base
文件重新生成
netsblox/base:latest
映像:

docker build -t netsblox/base:latest - < Dockerfile.base
docker build-t netsblox/base:latest-

然后您可以使用docker build重新生成映像。
,它应该使用更新版本的
netsblox/base:latest

不要忘记在docker Hub上推送更新的映像,否则在其他计算机上可能会出现类似问题(如持续集成)。我的回答只对你的问题有帮助