まとめ(自分用メモ)
Spring BootアプリをRenderにデプロイする中で詰まったポイントと、その解決方法を整理しておく。
1. リモート整理(push先の安全化)
配布元リポジトリに誤ってpushしないように、origin を自分のGitHubに変更し、配布元は upstream として残した。
なぜやるのか
課題のルールで「配布元へpushしない」必要があるため。
事故防止のための基本設定。
2. デプロイ用ブランチ作成
feature/deploy-render ブランチを作成し、デプロイ関連の作業はすべてこのブランチで実施。
なぜやるのか
main ブランチを汚さず、デプロイ用の変更を分離するため。
トラブル時の切り戻しも楽になる。
3. Dockerfile修正(最重要)
最初にハマった原因は、Dockerfileに「起動方法」が書かれていなかったこと。
FROM ...
だけでは、コンテナは起動してもアプリは動かない。
修正内容
- build stageで
./gradlew bootJarを実行してjarを作成 - runtime stageでjarをコピー
-
java -jar /app/app.jarをCMDに設定
なぜやるのか
Renderは「コンテナを起動するだけ」なので、
起動コマンドが無いとSpring Bootアプリは立ち上がらない。
4. Renderの環境変数設定(DB接続)
application.properties がローカル環境向け(db ホスト)になっていたため、そのままでは接続に失敗。
設定した環境変数
SPRING_DATASOURCE_URL
SPRING_DATASOURCE_USERNAME
SPRING_DATASOURCE_PASSWORD
なぜやるのか
本番環境では db:5432 のようなローカル設定は使えず、
Renderが提供するPostgreSQLに接続する必要があるため。
5. 再デプロイしてログ確認
Renderのダッシュボードから
Manual Deploy → Deploy latest commit
を実行して再デプロイ。
成功の判断ログ
Tomcat started on port 8080
Started SpringbootApplication
Your service is live
なぜやるのか
設定しただけでは不十分で、実際にアプリが起動することを確認する必要があるため。
今回の学び(要点)
- デプロイは「コード + 起動方法 + 環境変数」の3点セット
- ローカルで動いても、本番では接続先(特にDB)が変わる
- エラーログの1行(例:
UnknownHostException: db)が原因特定の鍵になる