Elastic Beanstalk を使用して CodePipeline を設定しています。Elastic Beanstalk は、Tomcat の webapps フォルダーに war ファイルをデプロイする必要があります。しかし、webapps/ROOT フォルダーに war ファイルをデプロイしています。そのため、 .ebextensions フォルダーに以下のスクリプトserver- update.configを作成して、war ファイルを webapps/ROOT/ から webapps フォルダーにコピーしました。
.ebextensions/server-update.config
container_commands:
copy_file:
command: sudo cp /var/lib/tomcat8/webapps/ROOT/test/* /var/lib/tomcat8/webapps/
leader_only: true
上記のコードは正常に実行されます。以下はログです。
[2016-04-18T14:06:30.939Z] INFO [1128] - [Application update code-pipeline-1460988338596-MyAppBuild-2d3bd0c0-62bc-4927-bd09-b04ba81e7c03@15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Starting activity...
[2016-04-18T14:06:30.973Z] INFO [1128] - [Application update code-pipeline-1460988338596-MyAppBuild-2d3bd0c0-62bc-4927-bd09-b04ba81e7c03@15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Completed activity.
しかし、ElasticBeanstalk は、.ebextensions ファイルを実行した後に tomcat webapps フォルダーをクリーニングしています (内部で /opt/elasticbeanstalk/hooks/appdeploy/enact/02clean.sh を実行している間)。
+ EB_APP_DEPLOY_BASE_DIR=/var/lib/tomcat8/webapps
+ rm -rf /var/lib/tomcat8/webapps/ROOT /var/lib/tomcat8/webapps/sampleapp.war
最後にスクリプトを実行するように構成する方法がわかりません。上記の要件について誰か助けてください。