🐍

【Heroku+Python+Flask】 HerokuでFlaskのサンプルアプリを起動

2024/06/22に公開

目的

Python + Flaskで開発したアプリケーションをHerokuにデプロイおよび公開できる。

開発環境

MacOs 14.4.1
Python 3.12.2
Flask 3.0.3
Werkzeug 3.0.2

仮想環境

仮想環境の作成方法

プロジェクト直下にmyenvを作成して、作成したディレクトリに移動する

$ mkdir myenv
$ cd myenv

python3 -m venv .を実行すると、myenvディレクトリ内に仮想環境を起動するためのファイルが自動作成されます。

$ python3 -m venv .
$ ls
> bin         include     lib         pyvenv.cfg

仮想環境を起動する

source bin/activateを実行することで、仮想環境に入ることができます。

$ source bin/activate

(〜venvディレクトリ名〜)が表示されていれば、仮想環境に入っていることを確認できます。

# myenv以下のファイルで構成された仮想環境内に入っている
(myenv) $ 

仮想環境を停止する

deactivateを実行することで、仮想環境から抜けることができます。

(myenv) $ deactivate
$  # 仮想環境から抜けた

ここまでがローカルでのPythonで開発したアプリを実行するための手順になります。
Herokuでは、gunicornを使用してPythonのWebアプリケーションを起動しています。

Gunicorn

PythonのWebアプリケーションサーバーで、WSGI準拠のWebアプリケーションフレームワークのことです。
読み方は、ジーユニコーン

(myenv) $ pip install flask gunicorn

サンプル用プログラムhello.pyを用意します。

(myenv) $ cd ..  # myproject内に移動
(myenv) $ touch hello.py
hello.py
# -*- coding: utf-8 -*-
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':

python3コマンドでhello.pyを実行します。

(myenv) $ python3 hello.py

Heroku

Procfile/requirementx.txt

Heroku上でFlaskアプリケーションを起動するために、Procfileに下記を記述する必要があります。

Procfile
web: gunicorn hello:app

requirements.txtは、PythonのWebアプリを動かすために必要なライブラリを記述するものになります。
これを使用することで、プロジェクトメンバーと同一の環境を共有することができます。

(myenv)$ pip freeze > requirements.txt

GitHub

ターミナル
(myenv) $ git push heroku main

HerokuにデプロイしたFlaskアプリを起動

Herokuにログイン後、Pesonal>対象アプリのOpen appを押下して、下記の画面が表示されればデプロイ成功しています。

「Opne app」を押下

デプロイ成功

参考記事

Flask+Python+Herokuで環境構築してから何かをデプロイするまで

Discussion