我刚刚开始使用AWS。我正在尝试使用codeship和AWS Codedeploy部署Node.js应用程序。我成功地将应用程序从代码船部署到Ec2实例。但是问题是我无法在appspec.yml中运行钩子文件。我的appspec.yml如下:
---
version: 0.0
os: linux
files:
- destination: /home/ec2-user/node-project
source: /
hooks:
ApplicationStart:
- location: bin/app-start.sh
runas: root
timeout: 100
在app-start.sh中,我有:
#!/bin/bash
npm install
app-start.sh永远无法运行,并且永远不会安装节点模块。我也尝试在日志路径(/var/log/aws/codedeploy-agent/codedeploy-agent.log)中进行代码部署的调试,但是没有错误和警告。我也尝试了多种方法,但是没有任何作用
该项目已成功安装在Ec2实例中,但是appspec.yml从不启动app-start.sh。任何帮助将不胜感激。
答案 0 :(得分:1)
问题是您将文件移动到/home/ec2-user/node-project
,这是在app-start.sh
生命周期钩子上运行ApplicationStart
之前发生的。您需要先cd
进入正确的目录,然后再运行npm install
。
更新的ApplicationStart
脚本:
#!/bin/bash
cd /home/ec2-user/node-project
npm install
# You'll need to start your application too.
npm start
顺便说一句,您可能想使用AfterInstall
生命周期挂钩来运行npm install
只是出于组织目的,但是在功能上没有什么不同。