-
Notifications
You must be signed in to change notification settings - Fork 9
Scala support
HerokuのCedarスタックはあらゆるタイプのScalaアプリケーションを実行することができます。
このドキュメントはScalaアプリケーションの検知と実行に関係する、Cedarスタックの一般的な振る舞いについて説明します。アプリケーションのデプロイ方法の更なる詳細な説明を確認する場合は、以下をご覧ください :
Scalaアプリケーションはファイルが以下のパターンにマッチするファイルが検出された時に、認識されます :
/*.sbt
/project/*.scala
/project/build.properties
/.sbt/*.scala
デプロイされたアプリケーションがScalaアプリケーションと認識された時、Herokuは-----> Scala app detected
と表示します。
:::term
$ git push heroku master
-----> Scala app detected
もしアプリケーションが/conf/application.conf
ファイルも含んでいた場合、Play 2.0アプリケーションが検知され、-----> Play 2.0 app detected
と表示します。更に情報を確認する場合はHeroku Play Supportの記事を見てください。
Mavenを使ったScalaアプリケーションも同様にデプロイできますが、Javaアプリケーションとして扱われます。そのため、Heroku Java Support が適応されます。
以下の環境変数が設定されます :
-
PATH
:.sbt_home/bin:/usr/local/bin:/usr/bin:/bin
-
JAVA_OPTS
:-Xmx384m -Xss512k -XX:+UseCompressedOops
-
SBT_OPTS
:-Xmx384m -Xss512k -XX:+UseCompressedOops
-
REPO
:/app/.sbt_home/.ivy2/cache
-
PORT
: WebプロセスがバインドされるHTTPポート -
DATABASE_URL
: Heroku Postgres データベースの接続用のURL
アプリケーションは、SBTのリリースバージョン0.11.0 - 0.12.3が指定されているsbt.version
プロパティを持つ/project/build.properties
ファイルを含んでいる必要があります。SBTのRC版はサポートされません。
HerokuのScalaビルドパックはアプリケーションをビルドするために、sbt clean compile stage
を実行します。アプリケーションが適切に実行されるために準備する必要がある様々な仕事を行うstage
タスクを、アプリケーションは含んでいる必要があります。例えば、Typesafeのxbst-start-script-plugin
はアプリケーションの開始スクリプトを生成するstage
タスクをSBTに追加します。プラグインを使うために、以下を含んだ/project/build.sbt
ファイルを作成します :
resolvers += Classpaths.typesafeResolver
addSbtPlugin("com.typesafe.startscript" % "xsbt-start-script-plugin" % "0.5.1")
デフォルトでは、Scalaアプリケーションはxbst-start-script-plugin
によって生成された開始スクリプトと共に起動されます :
web: target/start -Dhttp.port=$PORT $JAVA_OPTS
もしアプリケーションがxbst-start-script-plugin
を使っていないか、別の方法で起動する必要がある場合、Web
プロセスを開始させる別の方法を明示した、カスタマイズされたProcfile
をあなたのプロジェクトのルートに含める事が出来ます。
デフォルトでは、OpenJDK 1.6がインストールされています。ですが、system.properties
ファイルの中にjava.runtime.version=1.7
と明示することで、新しいJDKを使う事を選ぶこともできます。
ここにsystem.properties
ファイルがどのような見た目になるかを示します :
:::term
java.runtime.version=1.7
Java6,7,または8(ラムダ関数があります)に対して、1.6, 1.7, または1.8(1.8はベータです)をそれぞれ明示できます。
あなたのアプリケーションが使うJDKはSlugの中に含まれ、Slugのサイズに影響をします。
HerokuのPostgresスターター向けデータベースアドオンが、Scalaアプリケーションには自動で配備されます。これはDATABASE_URL
環境変数を生成します。