我需要在弹性beanstalk上运行的节点js应用程序中安装一个单独的框架。
我已经尝试将脚本放在我的主package.json文件中,但是在安装时我得到了权限错误。
所以我创建了一个配置文件,并尝试从container_commands运行npm install。它没有想要运行npm,因为它说命令丢失了。我尝试将正确的环境路径变量添加到npm,当通过ssh手动完成时,它会起作用,但是它给出了相同的错误,它无法找到npm命令。
最后。
我通过ebextension创建了一个bash脚本,它安装了应用程序,并从container_commands运行该脚本。
脚本被正确创建但从未运行过。如果我ssh到实例并手动执行它作为sudo工作。 该应用程序部署没有错误但它似乎永远不会执行脚本,我知道这是因为从未创建node_modules文件夹。
我不确定在我的日志中查找错误的位置,当我尝试时,我找不到任何有用的内容。
这是我的ebextension:
files:
"/tmp/install_application.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
export PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
eval "cd /var/app/current/library/server && npm install --production"
eval "cd /var/app/current && npm install --production"
container_commands:
00-install-application:
command: "sh /tmp/install_application.sh"
答案 0 :(得分:1)
我设法找到了答案。 我的脚本有一些问题。
这是最终的脚本。
files:
"/opt/elasticbeanstalk/hooks/appdeploy/enact/00-install-application.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
cd "/tmp/deployment/application/library/server"
npm install --production