我正在尝试在Node.js Docker容器中构建Web应用程序的前端。当我在Windows PC上使用时,我的基本图像非常有限。我选择了this one,因为它是DockerHub上唯一一个下载量不错的文件。由于该应用程序旨在在Azure中运行,因此我也仅限于Windowsservercore2016。当我运行以下Dockerfile时,我收到以下错误消息(在我的主机系统上,运行正常):
FROM stefanscherer/node-windows:10.15.3-windowsservercore-2016
WORKDIR /app
RUN npm install -g @angular/cli@6.2.4
COPY . ./
RUN ng build
#
# Fatal error in , line 0
# API fatal error handler returned after process out of memory on the background thread
#
#
#
#FailureMessage Object: 000000E37E3FA6D0
我尝试通过-max_old_space 将用于构建过程的可用内存增加到最大16GB(笔记本电脑的整个RAM),但这没有帮助。我还联系了基础图像的作者,以查明这是否是问题所在,但由于使用较小的示例应用程序似乎无法重现此问题,因此效果也不佳。我已经在这个问题上工作了一个星期,而我的想法很严重,可能是什么原因。因此,我希望从这里获得新的动力。我至少可以调查一下。
我还尝试了在Windowsservercore基本映像上安装Node.js和Angular。如果有人知道如何执行此操作,那可能就是解决方案。
编辑:我注意到错误消息是从构建过程中获得的 only 输出,甚至没有尝试构建模块的信息。也许这意味着某事...
答案 0 :(得分:1)
算法,我弄清楚了。尽管正式的Docker文档指出,Docker可以无限制地访问资源,但是当您的构建过程中存在一定数量的内存时,您似乎需要使用-m选项。