我在Docker中有一个在赫洛库上运行的Spring启动应用程序。
最近,在将Tomcat更新到10.1.0-M10之后,我开始出现以下错误:
错误R10(启动超时)-
由于早期版本中的漏洞,降级到较低版本的直接想法不起作用。我已经检查了可能的原因,发现Tomcat绑定端口问题。
我无法为不同的端口设置固定配置,因为我正在部署到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
从错误消息来看,$PORT
似乎未解析为任何环境变量。
部署到heroku,您必须使用. env
文件来定义env vars(您不能使用docker run-e PORT=1234
)参见留档
在本地使用heroku时,可以在.env文件中设置配置变量。运行heroku local时,将读取.env,并在环境中设置每个名称/值对。使用Docker时可以使用相同的.env文件:<code>Docker run-p 5000:5000--env file.env
我找到了一个不完美但似乎对我有效的解决方案。
2.6.3
降级为1.6.1
10.X.X
降级为9.X.X
我认为最近的两个做了魔术。开发工具停止在测试/生产环境中请求额外的端口。Tomcat 在版本 9.X.X
中绑定了端口,但在 10.X.X
中未绑定端口。
尽管我找到了解决方案,但我不知道它为什么会这样,而且在安全方面也不是完美的。
我读了很多书,我认为这个问题主要与端口号有关。在这个错误之前,我在本地设置自己的端口,但在谷歌搜索了几次之后,我发现我必须分配Heroku提供的端口号,所以我继续添加
问题内容: 我发现了许多针对Express的应用程序的解决方案,这些应用程序设置了监听端口。但是我有一个不使用Express且实际上不监听任何内容的应用程序。成功运行60秒后,我收到一条消息。我该如何解决?谢谢。 问题答案: 经过大量谷歌搜索后,我决定添加 即使我不喜欢添加express只是为了避免一个错误,这也修复了错误。如果有人找到更好的解决方案,请告诉我。
我正在heroku部署一个python脚本,它将在每
我正试图在heroku上部署我的服务器。我犯了这个错误: 这是我Java课: 我怎样才能解决这个问题? 谢谢你
我正试图将我的Spring Boot应用程序部署到Heroku,但我一直得到: 我已经看到了一些答案,这些答案告诉我这一点 在我的应用程序属性,但它仍然不工作。 我看不出我还能做什么,也没有进一步的输出可以提示我问题的根源。 有什么想法吗?