LoginSignup
2
2

More than 3 years have passed since last update.

Dashで作成したアプリをHerokuにデプロイ

Posted at

はじめに

Dashで世界遺産を世界地図にプロットでアプリを作成してみたので、Heroku を使ってデプロイしてみる。準備はGetting Started on Heroku with Pythonを、Dash アプリのデプロイはDeploying Dash Appsを参考に進める。実行環境は以下の通り。
- Windows10 Pro
- Python 3.7.6
- Anaconda 4.9.2

コマンドライン上で行うものはすべて Anaconda Prompt で実行している。

準備

Heroku にデプロイするにあたり、以下が必要となる。
- Git
- Heroku Command Line Interface (CLI)

Git はすでにインストールしてあるため、Heroku CLI をインストール。Getting Started on Heroku with Pythonにインストーラがあるので、該当するものをダウンロードし、インストールする。インストールはデフォルトのまま行った。

Anaconda Prompt 上で $ heroku login コマンドを実行すると、ウェブブラウザが立ち上がるのでログイン(アカウントがない場合は作成)する。ログインが完了したらこのブラウザは消しても問題ない。

Dash アプリのデプロイ

Deploying Dash Appsに従って進める。なお、仮想環境は venv ではなく Anaconda を用いている。

1. プロジェクトディレクトリの作成

$ mkdir world-heritage-cite
$ cd world-heritage-cite

2. Git によるディレクトリの初期化

test はもともと使用していた仮想環境。デプロイには gunicorn が必要となるため、インストールする。

$ git init
$ conda activate test
$ pip install gunicorn

3. app.py, .gitignore, requirements.txt, and Procfile の作成

app.py

app.py はDashで世界遺産を世界地図にプロットで作成したものを data とともにそのまま置く。名前は必ず app.py である必要があるようなので、名前を変更しておく。また import osserver = app.server の二文をプログラムに追記しておく。

.gitignore

参考記事とは違いがあるので、いくつか削除して作成。正直理解していないので、詳しい方いたらコメントください。

# venv       # venv は使用していない
*.pyc
# .DS_Store  # Mac OS 特有のもの(?)
.env         # 正直よくわかっていないので残しとく

Procfile

以下内容で作成。

web: gunicorn app:server

requirements.txt

$ pip freeze > requirements.txtで自動で生成されるとのことだったが、以降で行う 4 のプッシュ時にエラーを吐いたので、自分で書く。(Anaconda を使っているので、pip freeze がうまく機能しないのかも。)

dash
dash-core-components
dash-html-components
gunicorn
numpy
pandas
plotly

4. Heroku の初期化、Git へのプッシュ、デプロイ

以下コマンドを実行。(余談ですが Windows は ' ' だとエラーを吐くようなので、" " を使う必要があるらしい。)

$ heroku create whc-app
$ git add .
$ git commit -m "Initial commit"
$ git push heroku master
$ heroku ps:scale web=1

https://whc-app.herokuapp.comに接続するもエラー。AppError.png

heroku logs --tail でエラーログを見てみると、app.py での単純なプログラムのミス(データの読み込みをローカルにおける絶対パスにしていた)ためだった。修正後はうまく動いた。次は Heroku でのデプロイができたので、AWS におけるデプロイなども試したい。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2