【发布时间】:2020-11-24 23:57:08
【问题描述】:
我正在尝试在 Node.js Docker 容器中构建 Web 应用程序的前端。由于我使用的是 Windows PC,因此我的基本图像非常有限。我选择了this one,因为它是 DockerHub 上唯一一个下载量不错的。由于该应用程序旨在在 Azure 中运行,因此我也仅限于 Windowsservercore 2016。当我运行以下 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输出,它甚至没有尝试构建模块。也许这意味着什么……
【问题讨论】:
-
如果你想要一些最小的东西,为什么不
alpine-node?可以看到,它被广泛使用,alpine 是轻量级容器的最佳选择。 -
Alpine 不是 Linux 发行版或仅在 Linux 上可用吗?当谈到 Linux 时,我是个大菜鸟,如果我忽略了某些东西,我很抱歉。
-
显示 angular.json 文件中的预算 json 数组
-
这就是 Docker 的目的,无论你在什么操作系统上都能够运行容器。您完全可以在 Windows 上运行 Linux 容器!我认为您的声明“我的基本映像非常有限”是关于 Docker for Windows 的支持,但是一旦安装,所有容器都可供您使用!
-
@trichetriche 来自Docker Classroom 的引用:但是,Linux 容器需要 Docker 主机运行 Linux 内核。例如,Linux 容器不能直接在 Windows Docker 主机上运行。 Windows 容器也是如此——它们需要在具有 Windows 内核的 Docker 主机上运行。
标签: node.js angular windows docker