Heroku

预计阅读时间:3分钟

有一个用于Heroku的快速入门资料库: https : //github.com/orangy/ktor-heroku-start

Preparing

要使用Heroku,您将需要Java,Maven / Gradle和Heroku CLI

您还需要在Heroku配置中配置公共密钥.

您可以尝试使用heroku --version命令来查看是否安装了命令行:

> heroku --version
heroku-cli/6.15.36 (darwin-x64) node-v9.9.0

您还将需要一个app.json文件来描述您的项目和依赖项:

{
  "name": "Start on Heroku: Kotlin",
  "description": "A barebones Kotlin app, which can easily be deployed to Heroku.",
  "image": "heroku/java",
  "addons": [ "heroku-postgresql" ]
}

您还将需要一个Procfile描述执行的内容:

web:    java -jar target/helloworld.jar

还有一个描述您的Java版本的system.properties文件:

java.runtime.version=1.8

Running locally

还有一个名为.env的文件以及其他文件(开发需要). 这将包含Heroku将传递给应用程序的环境变量. 例如,对于快速入门:

PORT=8080
JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/java_database_name

如果您在本地的postgresql安装中有用户名/密码,则也必须更改jdbc url:

JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/java_database_name?user=user&password=password

您还首先需要创建数据库:

> psql -c "CREATE DATABASE java_database_name;"

CREATE DATABASE

使用这些文件,您可以使用Gradle或Maven创建一个胖罐,并调整Procfile指向正确的文件.

构建jar之后,在Unix系统中,您可以使用heroku local:start来启动服务器.

Deploying

您首先必须创建一个应用程序或设置git remote. heroku create将使用可用的随机名称创建一个应用,并将设置回购的git remote. 调用heroku create ,您应该看到类似以下内容:

> heroku create
Creating app... done, ⬢ demo-demo-12345
https://demo-demo-12345.herokuapp.com/ | https://git.heroku.com/demo-demo-12345.git

这实际上将一个heroku远程添加到了git克隆中:

> cat .git/config
...
[remote "heroku"]
	url = https://git.heroku.com/demo-demo-12345.git
	fetch = +refs/heads/*:refs/remotes/heroku/*

之后,您必须将git更改推送到heroku遥控器. 它在推送上构建:

> git push heroku master
Counting objects: 90, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (59/59), done.
Writing objects: 100% (90/90), 183.08 KiB | 5.55 MiB/s, done.
Total 90 (delta 21), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Java app detected
remote: -----> Installing JDK 1.8... done
remote: -----> Executing: ./mvnw -DskipTests clean dependency:list install
...
remote:        [INFO] BUILD SUCCESS
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Total time: 49.698 s
remote:        [INFO] Finished at: 2018-03-23T04:33:01+00:00
remote:        [INFO] Final Memory: 41M/399M
remote:        [INFO] ------------------------------------------------------------------------
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 60.7M
remote: -----> Launching...
remote:        Released v4
remote:        https://demo-demo-12345.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/demo-demo-12345.git
 * [new branch]      master -> master

现在,您可以执行heroku open来在浏览器中打开您的应用程序:

heroku open

在这种情况下,它将打开:https://demo-demo-12345.herokuapp.com/

请记住,Heroku设置了一个名为PORT的环境变量,您必须绑定该变量而不是固定端口.
使用EmbeddedServer时,必须使用System.getenv ;而使用application.conf ,则必须设置ktor.deployment.port = ${PORT} .
请查看有关在配置中使用环境变量的页面,以获取更多信息.

by  ICOPY.SITE