Heroku在部署可执行jar时没有设置属性$PORT



我有一个Gradle-Kotlin项目,它是一个Spring启动项目,默认情况下在8080端口上运行服务器。

当我用。/gradlew bootJar命令编译并生成一个jar时,我可以通过执行这个jar来设置服务器。我想远程运行这个服务器,所以我使用Heroku (Heroku deploy:jar)来上传.jar。我可以上传jar并使用Heroku启动服务器,它检测到构建为Heroku/jvm。使用命令heroku logs --tail,我可以验证服务器已编译并启动并运行…但是在8080端口上。也就是说,我无法使用heroku的公共应用程序url(例如https://radiant-crag-94685.herokuapp.com/my-end-point)

访问服务器阅读一些文档,我来到了PORT配置。所以我创建了一个名为application的文件。把它放到src/main/resources文件夹中。这个.yml文件包含以下内容:

server:
port: $PORT

我生成了.jar文件并再次上传到Heroku。但这一次,应用程序在它的主类上崩溃了,消息是:

Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Integer] for value '$PORT'; nested exception is java.lang.NumberFormatException: For input string: "$PORT"

此处抛出异常:

@SpringBootApplication
open class AutomatedTestsApplication
fun main(args: Array<String>) {
runApplication<AutomatedTestsApplication>(*args)
}

我该如何解决这个问题?

您可以在应用程序中使用该变量。就像你这样:

server:
port: ${PORT}
或者,正如你在评论中提到的,我认为最好通过启动命令重写,使用如下命令:
java -jar service.jar --server.port=${PORT}

相关内容

  • 没有找到相关文章

最新更新