1

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

最後にスクリプトを実行するように構成する方法がわかりません。上記の要件について誰か助けてください。

4

2 に答える 2

1

同様の問題がありました。Django を適切にセットアップした後、Celery を再起動する必要がありました。最終的に、このように非常に簡単に解決しました。

files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_service.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
        #!/usr/bin/env bash
        service celeryd restart

これは、Elastic Beanstalk がコンテナに魔法をかけた後に実行されます。

于 2016-04-19T03:34:07.370 に答える
0

デプロイ後に何かを実行するために Elastic Beanstalk が必要な場合は、それを AppDeployPostHook に追加できます。https://stackoverflow.com/a/36603033/3167238でその方法を詳しく説明しました。特定のニーズに合わせて調整できます。

于 2016-04-19T02:31:36.253 に答える