Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker build(Windows)在运行后挂起';npm安装';_Node.js_Docker_Npm_Dockerfile_Docker For Windows - Fatal编程技术网

Node.js Docker build(Windows)在运行后挂起';npm安装';

Node.js Docker build(Windows)在运行后挂起';npm安装';,node.js,docker,npm,dockerfile,docker-for-windows,Node.js,Docker,Npm,Dockerfile,Docker For Windows,正如标题所述,我正在尝试使用“NPM安装”构建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

正如标题所述,我正在尝试使用“NPM安装”构建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部分somewhy。

当然,我可能错了,我希望听到更多的意见

只有两次机会。FROM将下载图像,但仅在同一个框中首次下载。
你的副本。如果您的内容非常丰富,则需要时间

因此,在我添加以下内容之后:

RUN del /S /Q node_modules
在“npm安装”之后, 在跑步和起步之间跳跃只需3分钟,而不像以前那样需要15分钟。
正如我所怀疑的,在运行层中创建的“node_modules”目录延迟了层之间的转换。

我只是不明白层与层之间传递信息的过程,如果有人能告诉我这将非常有帮助。

看看你在副本中做了什么。我复制我需要的所有源文件,我使用.dockerginore作为节点_模块等。因此,请尝试对其进行注释,以查看是否执行得更快。在某些情况下,最好添加一个.dockerginore文件以排除节点_模块