flaskアプリをHerokuにデプロイする方法について解説していきます!
事前準備
Heroku CLIのインストールやログインが済んでいる方は飛ばしてくださいね。
Heroku CLIのインストール
コマンドでHerokuを操作できるようにするためにも、まずはHeroku CLIをインストールしていきましょう。
macでは以下のコマンドをターミナルで叩くとHeroku CLIをインストールできます。
$ brew tap heroku/brew && brew install heroku
Linux等のインストール方法はこちらを参照してください。
Heroku CLIでログイン
以下のコマンドでHeroku CLIからHerokuにログインしてください。
$ heroku login
Herokuにデプロイする
flaskアプリを用意する
今回は簡単なHello Heroku from flask!を返すflaskアプリをデプロイしていきます。
まずはフォルダとapp.pyを用意しましょう。
(app.py以外の名前でもOK)
heroku-deploy-dir
└── app.py
app.pyの中身はこんな感じです。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_heroku():
return "Hello Heroku from flask!"
if __name__ == '__main__':
app.run(debug=True)
Herokuにデプロイするのに必要なファイルの用意
Herokuにデプロイして動作させるにはProcfile
とrequirements.txt
が必要になります。
どちらもアプリのルートディレクトリに配置しておきましょう。
heroku-deploy-dir
├── Procfile
├── app.py
└── requirements.txt
Procfileの用意
Procfileって何??
という人のためにも
Procfileの説明をHerokuから引用すると
Heroku apps include a Procfile that specifies the commands that are executed by the app on startup.
Heroku https://devcenter.heroku.com/articles/procfile
とあります。
日本語にすると、「HerokuのアプリはProcfileを含み、Procfileはアプリ起動時に実行するコマンドを指定する」です。
では具体的にflaskアプリをHerokuにデプロイする上でProcfileに何を記述すべきかというと、app.pyを実行するコマンドを記述します。
ローカルでPytnonファイルを実行するときはpython3
といったコマンドを使いますが、Herokuではgunicorn
でアプリを起動します。
ですので、Procfileにはgunicorn
のコマンドを記述します。
$ pip install gunicorn
app.py以外のファイル名の人は適宜app(左)を書き換えてください。
web: gunicorn --bind 0.0.0.0:$PORT app:app
これでProcfileの準備は完了です。
requirements.txt
requirements.txtは必要なPythonパッケージを記載したテキストファイルで,
Herokuでもこのファイルを元にしてパッケージが自動インストールされます。
以下のコマンドで現在のPython環境にインストールされているパッケージをrequirements.txtに書き出しましょう。
$ pip freeze > requirements.txt
Herokuへデプロイ
Herokuではheroku create
でアプリを作った時に、作られるgitリポジトリのmasterにpushすることで、デプロイすることができます。
heroku create アプリ名
でHerokuにアプリを作る(HerokuのページからでもOK)git init
でgitを初期化heroku git:remote -a アプリ名
でリモートリポジトリを追加する(originでなくheroku)- add & commit する
git push heroku master
でリモートリポジトリにpushしてデプロイ完了!
$ heroku create アプリ名
$ git init
$ heroku git:remote -a アプリ名(createで作った)
$ git add .
$ git commit -m 'first commit'
$ git push heroku master
pushすれば自動的にデプロイされるので気軽に待ちまーす
デプロイが完了したら
heroku openでページを見ることができるので確認してみましょう!
$ heroku open
