我试图添加每当gem运行ElasticBeanstalk并在eb-activity.log中收到此错误时停止我的部署。
Test for Command cron_01_set_leader
Activity execution failed, because: [Errno 2] No such file or directory:
'/var/app/ondeck' (ElasticBeanstalk::ExternalInvocationError)
我有点迷失为什么我无法进入'/ var / app / ondeck'或为什么文件夹var / app / ondeck还不存在。
当我进入我的EC2实例时,我可以确认没有ondeck文件夹
ls /var/app/
仅显示current
。我的猜测虽然是EB删除ondeck文件夹一旦上传到当前。
这是我的cron.config设置
#.ebextensions/cron.config
files:
/opt/elasticbeanstalk/hooks/appdeploy/post/10_reload_cron.sh:
mode: "00700"
owner: root
group: root
content: |
#!/usr/bin/env bash
. /opt/elasticbeanstalk/support/envvars
cd $EB_CONFIG_APP_CURRENT
bundle exec setup_cron
container_commands:
cron_01_set_leader:
test: test ! -f /opt/elasticbeanstalk/support/.cron-setup-complete
cwd: /var/app/ondeck
command: bundle exec create_cron_leader --no-update
leader_only: true
cron_02_write_cron_setup_complete_file:
cwd: /opt/elasticbeanstalk/support
command: touch .cron-setup-complete
这可能是权限问题,我该如何进一步调试此问题?
答案 0 :(得分:2)
容器命令的默认目录始终是应用程序的暂存目录,因此您不需要使用cwd:指令设置工作目录。我的Node.js应用程序有一个暂存目录,例如/ tmp / deployment / application。
这应该可以解决问题:
container_commands:
cron_01_set_leader:
test: test ! -f /opt/elasticbeanstalk/support/.cron-setup-complete
command: bundle exec create_cron_leader --no-update
leader_only: true
cron_02_write_cron_setup_complete_file:
cwd: /opt/elasticbeanstalk/support
command: touch .cron-setup-complete