我正在使用Elastic Beanstalk配置CodePipeline。 Elastic Beanstalk必须在其Tomcat的webapps文件夹中部署war文件。 但它正在webapps / ROOT文件夹中部署war文件。 所以我在 .ebextensions 文件夹中创建了以下脚本 server-update.config ,将war文件从webapps / ROOT /复制到webapps文件夹中。
.ebextensions /服务器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
我不知道如何配置我的脚本最后执行。 请任何人帮助我满足上述要求。
答案 0 :(得分: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在容器上发挥作用之后,它正在执行。
答案 1 :(得分:0)
如果您需要Elastic Beanstalk在部署后执行某些操作,您可以将其添加到AppDeployPostHook。我已在此处详细说明了如何执行此操作,https://stackoverflow.com/a/36603033/3167238您可以根据自己的具体需求进行调整。