チラ裏備忘録

情報整理

Heroku コマンドメモ

定番の流れ

#git init後に…
$ heroku create <アプリ名>

アプリ名は省略可能で,そうするとランダムな名前が自動で割り当てられる.
また,自分で決める場合も重複は認められない.
※createはgit init以降に行う.でないと下記太字のリモートリポジトリの自動割当が行われない.

$ git push heroku master

ローカルリポジトリにcommitしたファイル群を,Herokuのリモートリポジトリへ反映.
なお,createした段階で"heroku"にリモートリポジトリのURLが自動的に割り当てられている(リモートリポジトリの一覧にherokuのリポジトリが登録される)

アプリの削除

heroku destroy --app <アプリ名> --confirm <アプリ名>

Herokuのダッシュボードからでも可能.

変数の定義・削除

定義: config:set
削除: config:unset

# 定義
$ heroku config:set MY_VAR1=val1
#まとめて定義
$ heroku config:set MY_VAR2=val2 MY_VAR3=val3

#削除
$ heroku config:unset MY_VAR1
#まとめて削除
$ heroku config:unset MY_VAR2 MY_VAR3

ログを確認

コマンド実行時点でのログを確認

$ heroku logs

リアルタイムで確認(Control + Cで終了)

$ heroku logs -t

尚,標準出力(print文による出力)はログに残る.

関連ファイル

Procfile

書式

<process type>: <command>

Pythonを使う例?

web: python app.py

Flaskを使う例(gunicornと呼ばれるWSGI(Web Server Gateway Interface)を用いる)

web: gunicorn <アプリ名>:app --log-file

--log-fileオプション: 標準エラーを出力

アプリ名は,test.pyなら"test" ※拡張子不要
一方,Heroku側が自動でここらへんを適切に処理してくれるので,不要な場合も多いらしい.
(ただ,明確化のために書くなら推奨されているとかなんとか)

requirements.txt

必要なパッケージ等を記述する.
以下のようにすると,pipで入れたローカル開発環境のライブラリ等をそっくりそのまま適用できる.

$ pip freeze > requirements.txt