Flask Python Webアプリケーション

【Python】Heroku+FlaskでサーバレスWebアプリをデプロイする

この記事は約5分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です。今回は前回使用したHerokuを使ってPythonのwebアプリケーションフレームワークであるFlaskを使ったサーバレスアプリをデプロイしたいと思います。

 

Herokuにログインする

 

# herokuにターミナルからログイン
$ heroku login

 

新規プロジェクトを作成

 

# 新規プロジェクトの場合は作成(プロジェクト名は任意)
$ heroku create himajin-flask-test

 

 

プロジェクトに接続したらcdコマンドでローカルの作業フォルダに作成します。

# 既存のプロジェクトに接続する
$ heroku git:remote -a himajin-flask-test

 

次にgit cloneで表示されたgitのURLからリポジトリをクローンしてローカルの作業フォルダを作成します。

 

# ローカルにリポジトリを作成する
$ heroku git:clone -a himajin-flask-test

 

これでローカルにリポジトリが作成されるので、そこに移動します。

 

# 作業ディレクトリを移動する
$ cd himajin-flask-test

 

作業ディレクトリに移動したら、そこにサンプルの「main.py」[Procfile]「requirements.txt」「runtime.txt」の4つのファイルを作成して配置します。

 

 

<main.py>

from flask import Flask
import os

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Heroku"

if __name__ == "__main__":
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

 

<Procfile>

web: python main.py

 

<requirements.txt>

flake8==3.7.8
Flask==1.1.1
Flask-Devices==0.0.1
Flask-SQLAlchemy==2.4.1

 

<runtime.txt>

python-3.7.10

 

デプロイ時にRequested runtime (python-●●) is not available for this stack (heroku-20).というエラーが表示されている場合は https://devcenter.heroku.com/articles/python-support で対応されているバージョンかを確認してみてください。

 

プロジェクトに接続して更新内容をデプロイする

 

ローカルリポジトリに必要なファイルを配置したら、gitコマンドでデプロイします。

 

# git経由でデプロイする
$ git init
$ git add .
$ git commit -m "first commit"
$ git push heroku master

 

https://<プロジェクト名>.herokuapp.com/ にアクセスするとデプロイ状況が確認できます。

 

デプロイ時のよくあるエラー

 

 

$ git push heroku master

fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 

configにリモート先が指定されていないのが原因なので.git/configをコマンドなりテキストエディタで以下のように付け加える

 

[remote "origin"]
  url = https://hoge@bitbucket.org/hoge/hoge.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

# ↓を追加し、URLとFetchにはoriginのものと同じにする
[remote "heroku"]
  url = https://git.heroku.com/hoge.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

 

また複数のアプリを管理していてどのアプリのgitと接続しているかわからなくなったときは以下のコマンドで確認できます。

$ heroku info

 

 

Flaskでサーバレスアプリが作れると機械学習アプリなんかを簡単にデプロイすることができるので知っておいて損はないです。他にもfirebaseとか最近はクラウドで無料でWebサービスを公開できるサービスが増えてきています。

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】Heroku+Flaskでサーバレスアプリをデプロイする […]

  2. テスト より:

    not a git repository が出た場合は自分のGITアカウントに接続している
    ために起こる git init で初期化する

  3. […] 関連記事:【Python】Heroku+Flaskでサーバレスアプリをデプロイする […]

  4. […] 【Python】Heroku+FlaskでサーバレスWebアプリをデプロイする […]

タイトルとURLをコピーしました