java - Docker 中的 Spring Boot 应用程序收到 : Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

标签 java spring spring-boot docker heroku

我在 Docker 中有一个在 Heroku 上运行的 Spring Boot 应用。

最近,将 Tomcat 更新到 10.1.0-M10 后,我开始收到此错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

由于早期版本中的漏洞,立即降级到较低版本的想法行不通。我检查了可能的原因并找到了 Tomcat binding port issue .

我无法为不同的端口设置固定配置,因为我正在部署到 Heroku 并依赖于它们的随机端口。

我的 Dockerfile:

FROM azul/zulu-openjdk-alpine:11
ENV PORT=$PORT
COPY /target/app.jar /app.jar
CMD java -Xms256m -Xmx512m \
    -Dlog4j2.formatMsgNoLookups=true \
    -Djava.security.egd=file:/dev/./urandom \
    -Dserver.port=$PORT \
    -jar /app.jar

解决方法是什么?有什么我想念的吗?

更新:

还有更多来自 Heroku 的日志:

Feb 22 12:50:16 integration-test app/web.1 2022-02-22 20:50:16.057 [main] INFO  c.g.s.z.ApplicationKt - Started ApplicationKt in 8.09 seconds (JVM running for 9.062)
Feb 22 12:50:16 integration-test app/web.1 2022-02-22 20:50:16.060 [main] DEBUG o.s.b.a.ApplicationAvailabilityBean - Application availability state LivenessState changed to CORRECT
Feb 22 12:50:16 integration-test app/web.1 2022-02-22 20:50:16.063 [main] DEBUG o.s.b.a.ApplicationAvailabilityBean - Application availability state ReadinessState changed to ACCEPTING_TRAFFIC
Feb 22 12:51:06 integration-test heroku/web.1 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

最佳答案

我找到了一个不完美但似乎对我有用的解决方案。

  • 将 Spring Boot 从 2.6.3 降级到 2.6.1
  • 将 Tomcat 从 10.X.X 降级到 9.X.X
  • 删除了开发工具依赖项

我认为最近的两个发挥了魔力。开发工具停止在测试/生产环境中请求额外的端口。 Tomcat在9.X.X版本绑定(bind)端口,10.X.X版本不绑定(bind)。

即使我找到了解决方案,我也不知道为什么它会这样,而且它在安全方面也不是完美的。

关于java - Docker 中的 Spring Boot 应用程序收到 : Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71144037/

相关文章:

Java 可序列化混淆

java - Spring JPA、Hibernate中哪个类负责扫描@Entity注解?

java - 有人可以帮助我在 rest-api 中使用文本文件吗?

java - 如何使@Component类中的方法成为@Transactional?

java - Hibernate 自引用映射之谜

java - HashMap#hash(int)方法的解释

java - 在 Java 中创建带有子节点的 SOAP 消息

java - 我如何在 spring mvc 中使用我的 Controller ?

java - 具有多个调度程序的 Spring Java Config

java - 如何从用户请求中获取用户代理?