Amazoncontainer_commandsのドキュメントによると:
これらは、アプリケーションと Web サーバーがセットアップされ、アプリケーション バージョンのファイルが抽出された後、アプリケーション バージョンがデプロイされる前に実行されます。
(私のものを強調)
これは、コマンド/var/app/currentとして設定している時点で、まだ以前のバージョンを指していることを意味します。cwdただし、デフォルトでは、再びドキュメントから、次のようになりcwdます。
解凍されたアプリケーションのディレクトリです。
delayed_jobこれは、抽出されたばかりの (まだデプロイされていない) アプリのディレクトリから実行する場合は、オーバーライドせずcwdに、デプロイしようとしているアプリのdelayed_jobを開始する必要があることを意味します。
参照: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-container_commands
アップデート:
私は今これを自分で設定しましたが、標準を介してそれを行うには制限があることがわかりましたcontainer_commands-基本的にdelayed_jobは、まだ/var/app/ondeckディレクトリにある間に開始されます。通常はこれで問題ありませんが、一部のジョブで問題が発生しました。これは、アプリが/var/app/current.
アプリサーバーが再起動された後に実行されるスクリプトを追加できるという、文書化されていない (警告!) アプローチを見つけました (そして、新しいデプロイは にあります/var/app/current)。
/opt/elasticbeanstalk/hooks/appdeploy/post基本的に、Elastic Beanstalk は、ウェブサーバーの再起動後にスクリプトを実行します。つまり、このディレクトリにシェル スクリプトをドロップすると、シェル スクリプトが実行されます。
以下のようなシェルスクリプトを作成しました。
#!/usr/bin/env bash
. /opt/elasticbeanstalk/support/envvars
cd $EB_CONFIG_APP_CURRENT
su -c "RAILS_ENV=production script/delayed_job --pid-dir=$EB_CONFIG_APP_SUPPORT/pids restart" $EB_CONFIG_APP_USER
このスクリプトを S3 バケットにアップロードし、「パブリック」であることを確認しました。.ebextensions次に、ディレクトリ (例: )でオプション スクリプトを使用して、99delayed_job.configこのスクリプトをアプリのデプロイの一部としてデプロイできます。ただし、postディレクトリが存在しない可能性があることに注意してください。
commands:
create_post_dir:
command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_delayed_job.sh":
mode: "000755"
owner: root
group: root
source: http://YOUR_BUCKET.s3.amazonaws.com/99_restart_delayed_job.sh
展開すると、次のように表示されます/var/log/eb-tools.log。
2013-05-16 01:20:53,759 [INFO] (6467 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Executing directory: /opt/elasticbeanstalk/hooks/appdeploy/post/
2013-05-16 01:20:53,760 [INFO] (6467 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Executing script: /opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_delayed_job.sh
2013-05-16 01:21:02,619 [INFO] (6467 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Output from script: delayed_job: trying to stop process with pid 6139...
delayed_job: process with pid 6139 successfully stopped.
2013-05-16 01:21:02,620 [INFO] (6467 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Script succeeded.
私が言ったように、この「投稿」ディレクトリに何かを入れることは文書化されていません - しかし、うまくいけば、ある時点で、Amazon が.optionsデプロイ後にコマンドを実行するスクリプトに実際のサポートを追加することを願っています。