1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PipenvでFlaskアプリをHerokuにデプロイする手順

Last updated at Posted at 2021-03-05

はじめに

Flaskで作ったWebアプリをPipenvでHerokuに公開する手順を書いた。
requirements.txtを使わずにPipenvを使っている手順でまとまっているものが無さそうだったので。

前提条件

  • pythonがインストールされていること
  • pipがインストールされていること
  • pipenvがインストールされていること(pip install pipenv
  • GitのCLIが使えること(Macなら最初から入っている)
  • GitHubのアカウントがあること
  • Herokuのアカウントがあること(Heroku CLIは不要)

手順

作業ディレクトリ作成

ターミナル
mkdir myapp
cd myapp

依存関係を追加

Pipenvで必要なライブラリの依存関係を定義する。
Pythonは3系を使う。
今回はFlaskアプリを作るので、flaskgunicornの2つを入れる。

ターミナル
pipenv --python 3
pipenv install flask
pipenv install gunicorn

この時点でPipfilePipfile.lockの2ファイルができているはず。

Flaskアプリ作成

アプリケーションの本体を書き、app.pyという名前で保存する。
ここでは簡単のため、以下の内容にする。

app.py
# -*- coding: utf-8 -*-
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, World'

if __name__ == '__main__':
    app.run()

ローカルで動くことを確認

ローカルで動作確認をするには以下のようにする。

pipenv run python app.py

(普通にpython app.pyとするとグローバルに定義されたPythonを使ってしまうので注意)
以下のように表示されればOK。

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)        

ブラウザでhttp://localhost:5000 にアクセスして、期待通りの内容になっているか確認。
上の例だと、「Hello, World」という文字列が表示されていればOK。

Procfileを作成

公開したときに実行する処理の内容を記載したProcfileを作成する。
(必ずプロジェクトのルートに置く)

Procfile
web: gunicorn app:app

Gitに登録

公開する準備として、ここまでの内容をGitに登録する。

ターミナル
git init
git add .
git commit -m "first commit"

GitHubに登録

ブラウザからGitHubにログイン。
新しいリポジトリを作る。(privateでもOK)
指示にしたがってプッシュする

ターミナル
git remote add origin git@github.com:以下略
git branch -M main
git push -u origin main

Herokuと連携して公開

ブラウザからHerokuにログイン。
Create new app。

  • App nameに適当なアプリ名を入力。(これが公開するときのURLに含まれることになる。早いもの勝ちなのでmyappとかはすでに取られている)
  • Deployment methodにGitHubを指定。
  • Connect to GitHubで先ほど作ったGitHubリポジトリを指定。(初めてやるときは認証が入るはず。指示に従っていればOK)
  • Automatic DeploysでEnable Automatic Deploysを押す(これでGitHubリポジトリの特定のブランチ(例えばmain)にプッシュされたことを検知して、自動でデプロイを行うようになる)
  • 最初のデプロイをしたいので、Manual DeployでDeploy Branchを押す。

ブラウザでhttp://<アプリ名>.herokuapp.comにアクセスして、想定通りの内容になっているか確認。
これで公開ができた。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?