自分用のメモです。
Heroku
でJava(Spring Boot) のアプリを最低限動かすまでのメモです。
アカウントの作成、CLIのインストール(ログイン済)は済んだ状態です。
Heroku側でアプリを新規作成
Herokuのページ上で
- New から
Create New App
を選択 -
App name
を入力、region
はそのままUSで
とするとアプリを作成することができます。
コマンドラインで作る場合は heroku create
を実行する。
Heroku Postgres の追加
Heroku Postgres はHobby Dev
のプランなら無料で使うことができます。
- レコード数10,000
- ストレージ1GB
- 接続数20
という制限があるが趣味で使う分なら問題なさそう
追加の方法
Herokuのページ上で Resources
タブから Add-ons
から Heroku Postgres
を選んで
Plan Name を Hobbyを選んで(初期値でした) で Submit Order Form
を実行
Javaアプリの用意
Spring Initializr
で用意しました。 Javaは11
- Sprint Web
- Thymeleaf
- PostgreSQL Driver
- Thymeleaf
- Spring Boot DevTools
を選択して作成
application.propertiesの設定
とりあえずこんな感じにした
#Datasource
spring.datasource.url=jdbc:postgresql://localhost:5432/test_db
spring.datasource.username=test_user
spring.datasource.password=test_user
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10
#Jackson
spring.jackson.time-zone=Asia/Tokyo
logging.level.org.springframework=INFO
#spring.profiles.active=production
server.port=${PORT:8080}
これは自端末で動かすための設定です
DB接続設定について
Using the SPRING_DATASOURCE_URL in a Spring Boot app
によると Heroku
上で動かすときは起動時にDBのURL,ユーザー,パスワードのSpring Boot
用の環境変数として設定が上書きされるので、特にこのまま変更する必要はないです。
ポートについて
ポートは環境変数のPORT
で渡されるので
上書きできるようにserver.port
で設定しておきます。
Javaのバージョン設定
Javaのバージョン設定は system.properties
でします。
プロジェクト直下にファイルを作り
java.runtime.version=11
と書きます。
Procfile の設定
アプリを動かすための設定?
プロジェクト直下にファイルを作り Procfile
を作り
web: java -jar target/(成果物のファイル名).jar
としておきます。
ドキュメントは
あたり
あとはこのまま開発を続けます。
デプロイ
Herokuのページ上で Deploy
タブ に移動します。
デプロイの方法は 3つくらいあるみたいですが 今回は Heroku Git
にします。
Deploy using Heroku Git
の内容に従いデプロイします。
git init
heroku git:remote -a (アプリ名)
git add .
git commit -am "make it better"
git push heroku master
完了後
heroku open
を実行すれば開くことができます。
その他
動いているものの一覧
heroku ps
で確認できる。
ログを見る
heroku logs --tail
Config変数の設定
Herokuのページ上で Settings
ページの Config Vars
で設定できる。
コマンドライン上では
heroku config
で確認できる
また
heroku config:set XXX="bbbb"
とするとコマンドラインで設定することもできる。
Javaプログラムからは
System.getenv("XXX")
で取得できる。
ローカルで開発時は .env
ファイルを用意して heroku local web
で実行すればよい(はず)
.env
ファイルはコミットしないように .gitignore
に入れておく