正如标题所说,我正在尝试使用“ 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部分。
我当然可能错了,很想听听更多的意见!
答案 0 :(得分:0)
只有两次机会。 FROM将下载图像,但仅在同一盒中第一次下载。
您的副本。 。如果您直接拥有大量内容,将需要一些时间。
答案 1 :(得分:0)
所以我添加了:
RUN del /S /Q node_modules
“ npm安装”后,
在RUN和FROM步骤之间进行跳跃仅需3分钟,而不是以前的15分钟。
我怀疑,在RUN的层中创建的“ node_modules”目录延迟了层之间的转换。
我只是不了解各层之间传递的内容背后的过程,如果有人能启发我,这将非常有帮助。