herokuとspring-boot
herokuにspring-bootをデプロイするときのProcfile
の指定の仕方がいろいろあるようだが、しっくり来るのがあったのでメモ。
また、mavenではなくgradleを使ってデプロイする。
gradleの準備
gradleは、gvm
というパッケージ管理を使って、インストールする。
詳細は、こちら。
MacでGradleのインストールについて+GVMのコマンドなど使い方まとめ
build.gradleファイルの準備
プロジェクト直下に(mavenでいうところのpom.xml
と同じ場所)build.gradle
ファイルを配置
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar {
baseName = 'spring-boot-sample'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
// end::jetty[]
// tag::actuator[]
compile("org.springframework.boot:spring-boot-starter-actuator")
// end::actuator[]
testCompile("junit:junit")
}
defaultTasks "clean", "build"
task wrapper(type: Wrapper) {
gradleVersion = '2.4'
}
gradle wrapperでgradlewファイルを生成
この手順がわからずgradle使えないと思ってしまっていた。
gradle wrapper
- プロジェクト直下に
gradlew
ファイルが生成される。(gradlew.bat
はWindowds用らしい) - プロジェクト配下にgradleディレクトリが生成され、中にgradle-wrapper.jarが生成される。
gradlewから起動してみる
./gradlew build && java -jar build/libs/spring-boot-sample-0.1.0.jar
※ここで起動できないとあとに進まない
ここから先は、以下のページを参考にした。
GradleでビルドしたSpring BootアプリをHerokuで動かす
Procfileを修正
Procfile
web: java -jar build/libs/spring-boot-sample-0.1.0.jar --server.port=$PORT
foremanで起動してみる
foreman start web
※起動できるはず。起動できない場合は、ちゃんとjarファイルがあるか確認する。jarファイルの名前が間違っていないか?jarファイルがない場合は、gradlew build
を実行してみる。
.gitignoreに余計なファイルがコミットされないように設定を加える
.idea
/build/
/.gradle/
spring-boot-sample.iml
gradle
ディレクトリは、必要だが、.gradle
は不要。build
も不要。
herokuのカスタムbulidpackの設定
READMEを見てみるとちょっと手順が違うようだが、動くので問題ないと思っています。
heroku config:set BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git
gitにコミットして、herokuにpush
git push heroku master
herokuのログを確認。エラーがないこと。
heroku logs
起動を確認する
heroku open
動かくはず。