无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1
Posted
技术标签:
【中文标题】无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1【英文标题】:Fail to deploy node on Elastic Beanstalk : The command '/bin/sh -c npm install' returned a non-zero code: 1 【发布时间】:2019-08-27 08:09:22 【问题描述】:我正在使用 AWS 的弹性 beanstalk 来部署和托管使用 Docker 的 React 应用程序。
尽管我在本地机器上成功构建了 Docker 映像,但部署却神秘地失败了。
检查 EC2 实例上的日志(使用 eb ssh
)没有提供更多解释:
--------------------------------
/var/log/eb-commandprocessor.log
--------------------------------
Step 5/14 : COPY package.json /usr/src/app/package.json
---> Using cache
---> f06f2c9d6519
Step 6/14 : RUN npm install
---> Running in 9926fc11431f
The command '/bin/sh -c npm install' returned a non-zero code: 1
Failed to build Docker image aws_beanstalk/staging-app: 2c9d6519
我什至尝试使用
在已构建容器的最后一层内运行npm install
命令
sudo docker commit 9926fc11431f test && docker run -it test bash
cd /path/to/wordir
npm install
但返回码其实是0
还有其他方法可能会失败并且日志会返回错误的错误吗?
【问题讨论】:
你解决过这个问题吗?我遇到了同样的问题,无法找到解决方案 我从来没有解决过这个问题。我最终使用 kubernetes 引擎而不是 beanstalk 并分别构建我的图像。另一种解决方案是将依赖项存储在存储库中,这样您就可以跳过映像中的 npm install (但我不知道这是否是一种好习惯) 【参考方案1】:我正在为任何由此而来的未来人写这个答案。 如果没有 NPM 错误消息。问题是内存耗尽有两种方法可以在 Beanstalk 上专门解决这个问题:
使用内存更大的机器(而不是说 t2.micro) (推荐)切换到yarn
。 Yarn 使用的内存比 npm 少得多。
想办法减少内存占用
这个问题让我很头疼,所以我希望这对以后遇到这个问题的人有所帮助。
【讨论】:
以上是关于无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1的主要内容,如果未能解决你的问题,请参考以下文章
Elastic beanstalk [Rails] 部署问题 - 无法分配内存
无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1
在 Elastic Beanstalk 上部署 Pyramid 应用程序