我正在部署一个带有CMD行的Docker映像:
CMD ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-Dspring.server.port=$PORT","-Dserver.port=$PORT","-jar","/life-project.jar"]
在日志中,它看起来像:
2018-08-06T10:51:17.489612+00:00 heroku[web.1]: Starting process with command java -XX:\+UnlockExperimentalVMOptions -XX:\+UseCGroupMemoryLimitForHeap -Djava.security.egd\=file:/dev/./urandom -Dspring.server.port\=\48227 -Dserver.port\=\48227 -jar /life-project.jar
出现以下错误:
2018-08-06T10:51:26.106011+00:00 app[web.1]: ***************************
2018-08-06T10:51:26.106012+00:00 app[web.1]: APPLICATION FAILED TO START
2018-08-06T10:51:26.106014+00:00 app[web.1]: ***************************
2018-08-06T10:51:26.106015+00:00 app[web.1]:
2018-08-06T10:51:26.106017+00:00 app[web.1]: Description:
2018-08-06T10:51:26.106018+00:00 app[web.1]:
2018-08-06T10:51:26.106020+00:00 app[web.1]: Failed to bind properties under 'server.port' to java.lang.Integer:
2018-08-06T10:51:26.106021+00:00 app[web.1]:
2018-08-06T10:51:26.106022+00:00 app[web.1]: Property: server.port
2018-08-06T10:51:26.106024+00:00 app[web.1]: Value: $PORT
2018-08-06T10:51:26.106025+00:00 app[web.1]: Origin: "server.port" from property source "systemProperties"
2018-08-06T10:51:26.106026+00:00 app[web.1]: Reason: failed to convert java.lang.String to java.lang.Integer
2018-08-06T10:51:26.106028+00:00 app[web.1]:
2018-08-06T10:51:26.106029+00:00 app[web.1]: Action:
2018-08-06T10:51:26.106030+00:00 app[web.1]:
2018-08-06T10:51:26.106032+00:00 app[web.1]: Update your application's configuration
我应该在配置中更改什么?
其他答案一般来说是正确的,但取决于环境,(1)可能未定义端口
,以及(2)var端口
可能在主机之间的转换中丢失
对我来说,解决这个问题的方法是在两个应用程序中都默认值。属性和Dockerfile,并使用--server。端口
而不是-Dserver。端口:
// application.properties
server.port=${PORT:8080}
// Dockerfile
CMD ["java", "-jar", "myapp.jar", "--server.port=${PORT:8080}"]
-Dserver。端口
应该是第一位,如下所示
CMD [ "sh", "-c", "java -Dserver.port=$PORT -Xmx300m -Xss512k -Dfile.encoding=UTF-8 -Dspring.profiles.active=prod -Djava.security.egd=file:/dev/./urandom -jar /opt/application.jar" ]
您需要在您的application.properties
(或yaml)中创建以下条目:
server.port=${PORT:8080}
Docker文档中描述了原因。您可以在CMD
中放置$
变量。
我正试图将我的Spring Boot应用程序部署到Heroku,但我一直得到: 我已经看到了一些答案,这些答案告诉我这一点 在我的应用程序属性,但它仍然不工作。 我看不出我还能做什么,也没有进一步的输出可以提示我问题的根源。 有什么想法吗?
我正在heroku部署一个python脚本,它将在每
我正试图在heroku上部署我的服务器。我犯了这个错误: 这是我Java课: 我怎样才能解决这个问题? 谢谢你
我找到了十几个用于设置监听端口的快速驱动应用程序的解决方案。但是我有一个不使用快递的应用程序,事实上也不听任何东西。成功运行60秒后,我得到一个
我读了很多书,我认为这个问题主要与端口号有关。在这个错误之前,我在本地设置自己的端口,但在谷歌搜索了几次之后,我发现我必须分配Heroku提供的端口号,所以我继续添加