2

我正在尝试使用 boxfuse 在 AWS 上运行我的 Spring Boot 应用程序。我遵循了Spring 的以下教程(第 54.4 节)以及Boxfuse的入门。

当我运行以下命令时

boxfuse run target\digigram-0.1.0.jar -env=prod

我得到以下几行

Waiting for AWS to boot Instance i-74fe7fc8 and Payload to start at http://52.28.94.159:8080/ ...
WARNING: Healthcheck (http://52.28.94.159:8080/) returned 404 instead of 200. Retrying for the next 120 seconds ...
Terminating instance i-74fe7fc8 ...

它以

Destroying Security Group sg-0ed6f667 ...
ERROR: Deployment of pantera160/digigram:0.0.0.1453900589995 failed in prod:Payload of Instance i-74fe7fc8 came up at http://52.28.94.159:8080/
with HTTP 404 (expected 200) => ensure your application responds with an HTTP 200 at http://52.28.94.159:8080/ or adjust the healthcheck configuration (healthcheck.path, healthcheck.timeout, ...) to fit your application
ERROR: Running pantera160/digigram:0.0.0.1453900589995 failed!

我不明白问题出在哪里。我是否必须更改 AWS 或我的应用程序中的某些内容或...

任何帮助将不胜感激。

注意:
我正在使用 AWS 的免费计划,这可能是问题所在吗?

4

1 回答 1

2

Boxfuse 确保您的应用程序的正确版本保持正常运行,并且不会被错误版本所取代。只有当新版本通过 Boxfuse 的健康检查时,Boxfuse 才会重新为其分配应用程序的弹性 IP。一旦完成,Boxfuse 就会终止旧版本的实例。

为了验证您的应用程序的新版本是否正确出现,Boxfuse 期望新版本实例的运行状况检查路径返回 HTTP 200。

没有执行器的常规 Spring Boot 应用程序的默认运行状况检查路径是/. 您的应用当前回答 404 而不是 200。

您有多种选择来解决此问题:

  • 将控制器添加到映射到/当您的应用程序正确启动时返回 HTTP 200 的应用程序。
  • 当您的应用程序正确启动时,将Boxfuse 更改healthcheck.path为确实响应 HTTP 200 的不同路径。
  • 通过设置禁用 Boxfuse 的健康检查healthcheckfalse不推荐,因为这有效地阻止了 Boxfuse 检查您的应用程序是否正确启动)

选择其中一个选项,您的应用程序将按您的预期正确显示。

于 2016-01-27T18:25:57.957 回答