SPARKCREATIVE Tech Blog

https://www.spark-creative.jp/

Heroku + Python + githubで簡単デプロイ

こんにちは!!!クライアントエンジニアの小林です。

今回はHerokuにPythonアプリをデプロイする方法をご紹介します。

公式のチュートリアル(Heroku スターターガイド (Python) | Heroku Dev Center)もあるのですが、使用しているツールがHerokuCLIというHeroku独自+コマンド操作のもので地味に面倒です。

なので!!! もっと簡単にできるgithub環境を使っていきます。

デプロイすることまでが目的ですので、最小構成で作っていきます。

Herokuとは?

Heroku はコンテナベースのクラウド型 PaaS(サービスとしてのプラットフォーム)です。
jp.heroku.com

PaaS(Platform as a Service)とはクラウドにあるプラットフォームが利用できるサービスです。
https://www.itmanage.co.jp/column/saas-paas-iaas/www.itmanage.co.jp

AWS(Amazon Web Services)の機能を絞って扱いやすくした感じだと思っています。
AWS使ったことないんですが。

私の作業環境

githubリポジトリさえ使っていただければ、他は好みの環境でいいと思います。
macは分からない。。。

環境構築に必要なファイル

一覧

これから作成する4つのファイル


これらはリソース直下に配置してください。
別階層に配置するとHerokuが読み取ってくれずに起動できなくなります。

vscode
github

main.py

import datetime as dt
import pandas as pd

def test():
    print('hello world!!')
    print(dt.datetime.utcnow().strftime('%Y/%m/%d %H:%M'))
    print(pd.DataFrame(columns=['A', 'B', 'C'], index=[i for i in range(2)]))

test()
hello world!!
2021/11/22 08:53
     A    B    C
0  NaN  NaN  NaN
1  NaN  NaN  NaN

動作確認用のコードです。

Procfile

bot: python main.py

拡張子が無い不思議なファイルで、環境構築で一番重要でそして面倒なところです。

これはアプリの実行方法を指定しており、bot(アプリ名)はmain.pyをpythonで実行させるよ!!!と書いています。

requirements.txt

pandas==1.2.4

使用ライブラリとバージョンをセットで指定します。
sysdatetimeなどの標準ライブラリは指定する必要がありません。

runtime.txt

python-3.9.5

Pythonのバージョンを指定しています。

デプロイ準備

Herokuにアプリを作成

  1. Herokuにログイン
  2. 右上のnewボタンを選択
  3. Create new appを選択
  1. App nameにアプリ名を入力
  2. リージョンはアメリカのまま
  3. Create appを選択、Herokuにアプリが作成されます

Herokuとgithubの連携

  1. Create appを選択後、自動的にデプロイ画面に飛びます
  2. GitHubを選択、Connect to GitHubを選択
  3. Authorize herokuを選択、連携させます

デプロイ対象のリポジトリを選択

  1. repo-nameにリポジトリ名を入力
  2. 該当リポジトリ一覧が表示されるのでConnectを選択
  3. デプロイ準備!!!

リポジトリを変更したい場合

デプロイ対象のリポジトリを変えたい場合や、デプロイ対象のリポジトリを選択での手順を間違えた方向け。

  1. Disconnectを選択
  2. 再度、デプロイ対象のリポジトリを選択の手順を行う
  3. 以上!!!

デプロイ

手動/自動デプロイの違い

自動 リポジトリに変更があった場合(主にプッシュ)に自動的にデプロイを実行してくれる
手動 デプロイボタンを押さない限りは何も起きない

手動デプロイ手順

  1. Deploy Branchを選択
  2. ビルドログを眺めて待つ!!!
  3. 完了!!!
ビルドログ

自動デプロイ手順

自動デプロイを設定後、リポジトリに変更が発生するとデプロイが実行されます。

  1. Enable Automatic Deploysを選択
  2. 完了!!!

動作確認

アプリ起動

  1. 鉛筆アイコンを選択
  2. トグルボタンを選択
  3. Confirmを選択
  4. 起動完了!!!
起動手順

ログ確認

  1. 右上のMoreを選択し、View logsを選択
  2. ログ見れた!!!

アプリ終了

終了手順

おわり!!!

そんなこんなで最小構成の構築と動作確認までが終わりました。
お疲れさまでした!!!

元々は環境構築+アドオン紹介の予定でしたが、思いのほか長くなってしまったので、アドオン紹介等はまた次回に書きたいと思います。

以下次回の紹介予定(未定)です。

  • 環境変数の扱い
  • CSV入出力を可能にするアドオン
  • IPアドレスを固定するアドオン
  • プログラムの定期実行のやり方
  • 終了や再起動シグナルを受け取る方法