【问题标题】:AWS Code Pipeline deploy results in a 404AWS Code Pipeline 部署导致 404
【发布时间】:2020-09-22 21:31:19
【问题描述】:

我正在尝试为现有应用程序创建管道。它是一个 React/Java Spring Boot 应用程序。它通常被捆绑到一个单一的战争文件中并上传到 ElasticBeanstalk。我创建了我的 codebuild 项目,当我手动运行它时,它会生成一个 war 文件,然后我可以将其上传到 ElasticBeanstalk 并且一切正常。其构建规范如下:

version: 0.2

phases:
  install:
    commands:
      - echo Nothing to do in the install phase...
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn -Pprod package -X
  post_build:
    commands:
      - echo Build completed on `date`
      - mv target/cogcincinnati-0.0.1-SNAPSHOT.war cogcincinnati-0.0.1-SNAPSHOT.war
artifacts:
  files:
    - cogcincinnati-0.0.1-SNAPSHOT.war

当我在管道中运行此构建步骤时,它会生成一个 zip 文件,该文件会被拖放到 S3 上。我的部署步骤采用该构建工件并将其发送到 ElasticBeanstalk。 Elasticbeanstalk 没有给我任何错误,但是当我导航到我的网址时,我得到了 404。

我尝试将 zip 文件直接上传到 Elasticbeanstalk,得到了相同的结果。我已经解压了这个文件,它似乎有我所有的项目文件。

当我查看服务器日志时,我没有看到任何错误。我不明白为什么当我手动运行 codebuild 时似乎正在生成一个 war 文件,但在代码管道中执行时却是一个 zip。

【问题讨论】:

  • 您是在上下文路径下部署吗?如果是这样,请阅读有关在 jhipster.tech/production/#building-an-executable-jar--war-file 上设置基本 href 的信息
  • 我更新了对 new BaseHrefWebpackPlugin({ baseHref: '/cogcincinnati/' }) 的引用并重新部署。它没有用。我认为你可能是正确的,它可能是不正确的。我认为根本问题是它没有部署正确的配置文件。

标签: spring-boot amazon-elastic-beanstalk jhipster aws-codepipeline aws-codebuild


【解决方案1】:

将 artifacts war 文件名更改为 ROOT.war 这将解决您的问题,实际上您的应用程序已成功部署但在不同的路径上,这是通过更改 ROOT 来构建的 tomcat 功能,它将在“/”上运行应用程序

所以更新的 buildspec.yml 将是

version: 0.2

phases:
  install:
    commands:
      - echo Nothing to do in the install phase...
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn -Pprod package -X
  post_build:
    commands:
      - echo Build completed on `date`
      - mv target/cogcincinnati-0.0.1-SNAPSHOT.war ROOT.war
artifacts:
  files:
    - ROOT.war


【讨论】:

    【解决方案2】:

    您的应用程序似乎失败了,您应该查看 Beanstalk 环境中的日志,特别是:

    • “tomcat8/catalina.out”
    • “tomcat8/catalina.[日期].log”

    [1] 在您的 Elastic Beanstalk 环境中查看来自 Amazon EC2 实例的日志 - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.logging.html

    更多关于在EB环境下使用Tomcat平台的细节,可以参考这篇文档: - 使用 Elastic Beanstalk Tomcat 平台 - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html

    关于您项目中的文件夹结构,请参考此文档: - 构建你的项目文件夹 - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform-directorystructure.html

    【讨论】:

      【解决方案3】:

      尝试在 buildspec.yml 文件的末尾添加 discard-paths: yes。这将帮助您解决路径错误。

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        • 1970-01-01
        • 2018-10-11
        相关资源
        最近更新 更多