繁体   English   中英

Docker nodejs build 在本地工作但挂在服务器上

[英]Docker nodejs build works locally but hangs on server

我在 docker 中构建了一个节点应用程序,它在我的本地机器 (mint 18) 上构建和运行完美。 但是,当我将其上传到 Digital ocean 的 Docker droplet (ubuntu 16.04) 时,它在构建过程中挂起并最终抛出错误。 这每次都发生在完全相同的地方。

这是最后一行&我在构建时可以看到的错误消息..

npm info lifecycle app@0.0.1~preinstall: app@0.0.1 Killed The command '/bin/sh -c npm install' returned a non-zero code: 137

PS:我是 docker 的新手,只用了几天,所以这可能是非常明显的事情。

如果您查看issue 1554 ,则可能是资源问题。

内存不足或磁盘不足都会导致此类错误消息。

这个Digital Ocean 教程提到基本的 Droplet 只有 512MB 磁盘空间。 也许你的 Dockerfile 项目的组合镜像太重要了。

细节

我尝试通过 docker-compose 将 NodeJS 应用程序部署到 Digital Ocean droplet。 我的应用程序每次都在构建步骤中挂起。 但是当我在本地执行docker-compose up --build时,我没有任何问题。

PS 我的 DO 液滴上有 1 Gb RAM 内存。

解决方案

所以,我刚刚将.dockerignore ( source ) 添加到 NodeJS 项目

# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules

server/*.spec.js
kubernetes

您可能缺少一些交换空间!

我使用docker的节点构建react应用程序,构建后的服务器要求非常低,512MB或1G足以用于测试环境甚至一些小型生产环境。

虽然节点在构建期间需要更多内存并且数字海洋水滴没有交换空间,但它很容易变通

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM