Flaskで作ったアプリをHerokuにデプロイしたかったのだが,色々突っかかったのでメモ.
ファイル一覧
Flaskファイル
Flaskは1つのPythonファイルでアプリを作成できる便利なフレームワーク.
heroku-basic-flaskにならってapp.py
を作成.
- app.py
Hello heroku
と時刻を表示させるだけのコード
Herokuに必要なファイル
この記事のメイン.
Herokuに依存関係を特定させるために以下のファイルを作成する必要がある.(以下のファイルはapp.py
と同じ階層に置く)
-
Procfile
- 実行するコマンドを宣言するファイル
- gnicornを使うといいみたいなのでpip installしておく
- 書き方は
プロセスタイプ:コマンド
という感じ. - app.pyを実行してほしい -->
web: gunicorn app:app --log-file=-
-
requirements.txt
- 必要なPythonパッケージを記入
Flask
,gnicorn
etc...
- バージョンも書いておかないと
No such file or directory
となり、コンパイルできなかった- BAD
Flask
- --> GOOD
Flask==0.12.2
- BAD
- 必要なPythonパッケージを記入
- runtime.txt
- pythonのバージョンを記入 (like
python-X.X.X
) - 自分のバージョンはサポートされていないと忠告が表示された(下記ログ参照)ので最新の
python-3.6.5
に変更した
- pythonのバージョンを記入 (like
! The latest version of Python 3 is python-3.6.5 (you are using python-3.5.3, which is unsupported).
! We recommend upgrading by specifying the latest version (python-3.6.5).
Learn More: https://devcenter.heroku.com/articles/python-runtimes
デプロイ
今回はHeroku CLIを利用.
Herokuのdeployセッティングに書いてあるとおりにカタカタと書いていく.具体的には
heroku login
でログイン- gitを初期化してremoteをcloneする
git init
heroku git:clone -a heroku-app-name
- あとは
git add + commit
して,git push heroku master
でデプロイ完了
結果 : https://warm-plateau-56649.herokuapp.com
所感
- 大きいアプリにするならProcfileの仕組みをちゃんと理解したほうがよさげ
- gnicornも
- サーバーに関する知識不足を痛感
- もう少し深掘りして完成したアプリをデプロイできるようにしたい