无法使Docker节点应用程序使用最新版本的node / npm

时间:2019-02-26 06:53:04

标签: 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"]

Dockerfile.base的内容如下:

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@3.10.9的npm信息

     

使用node@v6.9.2的npm信息

我还应该在其他地方编辑node / npm版本吗?

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,请使用netsblox/base:latest文件重建Dockerfile.base图像:

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

然后您可以使用docker build .重建图像,它应该使用netsblox/base:latest的更新版本