![](/img/trans.png)
[英]Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch - Heroku
[英]Spring Boot app in Docker receives: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我在 Docker 中有一個 Spring 啟動應用程序,它在 Heroku 上運行。
最近,將 Tomcat 更新到 10.1.0-M10 后,我開始收到此錯誤:
錯誤 R10(啟動超時)-> Web 進程在啟動后 60 秒內無法綁定到 $PORT
由於早期版本中的漏洞,立即降級到較低版本的想法行不通。 我檢查了可能的原因,發現 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
我找到了一個不完美但似乎對我有用的解決方案。
2.6.3
到2.6.1
10.XX
降級到9.XX
我認為最近的兩個發揮了魔力。 開發工具停止在測試/生產環境中請求額外的端口。 Tomcat 在版本9.XX
中綁定端口,但在10.XX
中不綁定。
即使我找到了解決方案,我也不知道為什么它會這樣,而且它在安全方面也不是完美的。
從錯誤消息看來$PORT
未解析為任何環境變量。
部署到 heroku 你必須使用.env
文件來定義環境變量(你不能使用docker run -e PORT=1234
) 見文檔
在本地使用 heroku 時,可以在 .env 文件中設置配置變量。 當 heroku 本地運行時,讀取 env 並在環境中設置每個名稱/值對。 使用 Docker 時可以使用這個 same.env 文件:
docker run -p 5000:5000 --env-file.env <image-name>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.