Edited at

無料でWebアプリケーションを公開できるHerokuをやってみた


概要

時代の流れにだいぶ乗り遅れている気がしてきたので、少しでも取り戻そうと無料でWebアプリケーションの公開ができるHerokuを試してみるべく、公式サイトのGetting Started on Heroku with Javaをやってみた時のまとめ&備忘録

[公式サイト(英語)]

 Getting Started on Heroku with Java


Getting Started 完了時にできること


  • 無料でWebアプリケーションが公開できる(制限あり※)

  • 無料でDB(ポスグレ)が使える

※無料枠は、550時間/月

 30分間無操作(アクセスがないなど)だと自動的にスリープ状態

 (アクセスがあれば初回時間がかかるが自動起動する)

 詳細は以下を参照

 Free Dyno Hours


Getting Started 完了までのおよその作業時間

2時間(まとめながらやったのでやるだけならもっとずっと少ない印象)


参考書籍

英語ドキュメントが辛い場合、Herokuに関する唯一?の日本語書籍の以下が参考になりそう

Getting Startedと同程度の内容や、DB、ファイル、起動時のレスポンス時間の記載があり初心者に役に立つ情報が満載

プロフェッショナルのための実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用


自分のスキル


  • Java,Mavenほどほど

  • Heroku,git初心者


事前準備


  • 無料の Heroku account(メールアドレスのみ必要。クレカ登録不要で割と敷居が低い)

  • Java 8

  • Maven 3

下記、手順の中にインストール手順あり


やったことと要点

上記、公式サイトの手順に従い、以下の15STEPを完了

手順に従えば難なくできる

自分は2回失敗(後述)がむしろ恥ずかしい内容、、、


1. Introduction

事前準備の内容






2. Set up



Herokuコマンドラインのインストール(一緒にgitがインストールされる)



インストール後、Herokuコマンドでログイン



$ heroku login

Enter your Heroku credentials.
Email: java@example.com
Password:


3. Prepare the app

用意されているサンプルプログラムをgit cloneしてローカルに準備する

$ git clone https://github.com/heroku/java-getting-started.git

$ cd java-getting-started




4. Deploy the app



サンプルプログラムをHerokuにデプロイ&起動



$ heroku create

$ git push heroku master
$ heroku ps:scale web=1
$ heroku open






5. View logs



ログ確認方法の説明



$ heroku logs --tail


6. Define a Procfile

Procfileの説明

HerokuではこのProcfileでアプリケーションの種類を規定しているらしい






7. Scale the app



アプリケーションが動くDynoの概念の説明と上記無料枠の説明



Dynoはlightweight, secure, virtualized Unix containerらしい






8. Declare app dependencies

pom.xml,system.propertiesの説明とローカル環境での動作準備

system.properties で動作Versionを指定する






<失敗1>



Java、Mavenのインストールで環境変数JAVA_HOME、MAVEN_HOME追加、PATHへの設定を省略したため



No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 発生



環境変数MAVEN_HOME、JAVA_HOME追加、PATHへの両変数の追加で解消



9. Run the app locally



ローカル環境での起動と画面確認



ローカル環境のアクセスURL:http://localhost:5000










10. Push local changes



サンプルプログラム修正手順の説明と修正内容のHerokuへのデプロイ



$ mvn clean install

$ heroku local web

$ git add .

$ git commit -m "Demo"
$ git push heroku master
$ heroku open hello


<失敗2>

git commit -m "Demo" で *** Please tell me who you are.と言われる

heroku login した状態だったので勝手に連携されるだろうと思い込みいろいろやり直す、、、

結果、heroku loginは全く関係ない話しだったので、大人しくPlease tell me who you are.の後に表示された以下のコマンドを実行

git config --global user.email {メールアドレス}

git config --global user.name {名前}

11. Provision add-ons

add-onsが便利そうだがクレカ認証が必要とわかりスキップ






12. Start a one-off dyno



Dyno上でコマンド実行ができるとのこと



$ heroku run bash






13. Define config vars



ローカル環境とHeroku環境の環境差異を考慮してconfig設定が利用できるという説明



ローカル環境では、 .env ファイル、Heroku環境は、コマンドで設定する



$ heroku config:set ENERGY="20 GeV"

$ heroku config


14. Use a database

DB(ポスグレ)の説明

Heroku上では、サンプルに既にDBアクセス部分があるため、すんなり動作確認完了

Heroku環境のDB接続設定はconfigにある

ローカル環境では別手順がいるらしい(未実施)






15. Next steps



次はこの辺を勉強したらどうですか。という説明






まとめ

2時間程度で今後はプログラム修正したら以下の手順だけで簡単に公開できるのは便利

DBが使えるのも嬉しい


1. プログラム修正

2. mvn clean install

3. heroku local web

4. ローカルでの動作確認

5. git add .

6. git commit -m "Comment"

7. git push heroku master

8. heroku open