RUN'npm install'后Docker构建(Windows)挂起

时间:2019-11-19 14:26:34

标签: node.js docker npm dockerfile docker-for-windows

正如标题所说,我正在尝试使用“ NPM install”构建一个Dockerfile,如下所示:

FROM mcr.microsoft.com/windows/nanoserver:1809 AS build-nodejs
WORKDIR /app
COPY . .

ARG NODE_VERSION=12.10.0

RUN echo "Downloading NodeJS version %NODE_VERSION% ..." && \
    curl "https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-x64.zip" --output nodejs.zip && \
    echo "Expanding NodeJS ..." && \
    tar -xvf nodejs.zip -C "C:\\" 

RUN SET "PATH=%PATH%C:\node-v%NODE_VERSION%-win-x64" && \
    SET NODE_OPTIONS="--max_old_space_size=4096" && \
    SET CI=true && \
    ECHO "npm install ..." && \
    npm install
 .
 . 
 .

移至以下“从”步骤仅需15分钟!

FROM mcr.microsoft.com/dotnet/core/sdk:3.0.100 AS build-netcore
WORKDIR /app
.
.
.

RUN命令和FROM步骤之间会发生什么?
为什么需要15分钟才能进入FROM步骤? 我怀疑图像内的node_modules创建是原因,可能是某种原因将其传递给FROM部分。
我当然可能错了,很想听听更多的意见!

2 个答案:

答案 0 :(得分:0)

只有两次机会。 FROM将下载图像,但仅在同一盒中第一次下载。
您的副本。 。如果您直接拥有大量内容,将需要一些时间。

答案 1 :(得分:0)

所以我添加了:

RUN del /S /Q node_modules

“ npm安装”后, 在RUN和FROM步骤之间进行跳跃仅需3分钟,而不是以前的15分钟。
我怀疑,在RUN的层中创建的“ node_modules”目录延迟了层之间的转换。
我只是不了解各层之间传递的内容背后的过程,如果有人能启发我,这将非常有帮助。