最新のPlayframeworkを利用してHerokuへデプロイ

やっぱり悔しいので、再チャレンジしていく

sbtを利用してPlayframeworkプロジェクト作成

sbt new playframework/play-scala-seed.g8

これで、作成。sbt runして問題ないことみとくといい

変更していく

やったことを箇条書きしとく

  • build.gradle
    • def playVersion = "2.7.0" -> def playVersion = "2.6.0"
  • system.properties (なければ作成)
    • java.runtime.version=1.8 を追加
  • ルートディレクトリに Procfileを作成
    • web: target/universal/stage/bin/{プロジェクト名} -Dhttp.port=${PORT} -Dplay.crypto.secret=${APPLICATION_SECRET}
    • プロジェクト名は任意で変更すること
  • conf/application.confに追加
play.filters.hosts {
    # 有効なホスト名を設定(デフォルト値:localhost, .local)
    allowed = [.]
  }
  • sbt playGenerateSecret でランダムにキー生成する
  • heroku config:add APPLICATION_SECRET="{上記で生成したキー}"
    • ランダムキーに`が含まれてるとうまくいかないことがある(コマンドと思われるっぽい)ので、その場合はもう一度キーを作成したほうが早いかも
  • heroku buildpacks:set heroku/scala でbuildpackの追加

大まかにはこんな感じ

課題?

  • JDK11以上を使いたい場合。多分Packegeへのアクセス権周りを解決しないとだめ。(JDK9のあれ)
  • PlayFrameworkを2.7で作ったあと2.6にしているが問題ないのか
    • たぶん、2.7の機能とかは使えないはず。Gradle側の解決を待たないとだめかな。そのうち使えそうになる気がする

とりあえず、当面はJava1.8+Play2.6で作って行く予定。ある程度形になったところでgithubに移したいかな