首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS CodePipeline成功,但未正确部署到弹性豆茎

AWS CodePipeline成功,但未正确部署到弹性豆茎
EN

Stack Overflow用户
提问于 2016-12-08 20:19:40
回答 3查看 1.5K关注 0票数 1

当我调用应用程序URL时,将我的WAR文件(成功地)部署到Elastic Beanstalk会给我一个404 Not Found。我可以在/var/lib/tomcat8/webapps/ROOT/中看到一个application.war文件,而不是META-INF和WEB-INF,后者在我手动部署时就在那里。

当我从S3中拉出WAR文件并手动将其部署到Elastic Beanstalk时,它就像一个护身符。注意:这与CodeBuild在我的管道中生成的WAR文件相同。更好的是,如果我将文件安全复制(scp)到我的本地计算机,并将其上传到Elastic Beanstalk,它也可以正常工作。

似乎在部署之前,一切都正常工作,一个工作的WAR文件甚至被部署到Elastic Beanstalk。

通过eb-activity.log,我可以看到它识别了WAR文件,并将其从一个临时目录部署到/var/lib/tomcat8/webapps/ROOT,但是它没有解压,容器/WAR服务器也没有重新启动。

如何使用CodePipeline正确部署WAR文件?

EN

回答 3

Stack Overflow用户

发布于 2019-07-22 06:07:04

似乎近三年后的AWS Codepipeline还不是"WAR文件部署友好的“。正如@Azeq在评论中指出的那样,标准的Elastic Beanstalk部署过程不会解压缩war文件,也不会真正部署任何东西。Tomcat报告成功,因为复制的文件没有错误,但是CodePipeline不会解压缩war文件。

解决方案是以分解形式提供工件(已经解压)。为此,请修改构建后阶段和CodeBuild buildspec.yml的工件定义:

代码语言:javascript
运行
复制
version: 0.2

phases:
    install:
        runtime-versions:
            java: openjdk8
    pre_build:
        commands:
            - echo CODEBUILD_RESOLVED_SOURCE_VERSION $CODEBUILD_RESOLVED_SOURCE_VERSION
    build:
        commands:
            - mvn compile
    post_build:
        commands:
            - mvn package
            - mkdir artifact    <-- create folder to extract war file content
            - unzip target/my.war -d artifact/    <-- unzip to that folder
artifacts:
    files:
        - artifact/**/*   <-- reference all those files as the artifact
    name: artifact
cache:
    paths:
        - '/root/.m2/**/*'

注意构建后阶段中的mkdirunzip命令,以及artifacts部分中的files定义是如何编写的。根据CodeBuild documentation**/*意味着所有文件都是递归的。

票数 2
EN

Stack Overflow用户

发布于 2016-12-22 02:14:50

我试图复制您所面临的问题。我认为在创建"war“文件时,您会将包含"META-INF”和"WEB-INF“文件夹的文件夹作为"war”输出文件的根目录。

相反,您应该将所有文件(在上面的文件夹中)放在"war“文件中,而不是根级别的文件夹。

票数 1
EN

Stack Overflow用户

发布于 2020-08-11 06:51:26

我也为此挣扎了一段时间。最后,我能够通过让buildspec.yml从post_build部分中构建的war文件中提取WEB-INF目录来解决这个问题

由于AWS在您的工件周围放置了一个zip包装器,因此它在弹性豆茎实际需要的周围添加了另一个文件夹级别

代码语言:javascript
运行
复制
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  build:
    commands:
       - mvn compile
  post_build:
    commands:
      - mvn package
      - mkdir artifact
      - unzip target/demo-0.0.1-SNAPSHOT.war -d artifact/
      - mv artifact/WEB-INF WEB-INF
artifacts:
  files:
   - WEB-INF/**/*
  name: artifact 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41039374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档