はじめに
Pythonでウェブアプリを作成しており、デプロイのやり方を調べていたのですが最近Herokuが有料化になったと知りました。
そこで、調べていく中で無料でデプロイできるRenderというものを知ったので備忘録を兼ねてやり方をメモしていこうと思います。
1. 今回デプロイするもの
PythonのフレームワークであるFlaskを使った簡単なWebアプリを作成してそれをデプロイします。
URLにアクセスすると、ブラウザ上にHello World!
というテキストが表示されるというものです。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
使用したライブラリの依存関係をrequirements.txtに明記しておきます。
Flask
Gunicorn
Gunicorn
はFlaskやDjangoなどのPythonのフレームワークで開発されたアプリケーションを実行する際に使用します。また、Pythonのフレームワークの一つであるFastAPIではuvicorn
がよく使われます。
ローカル環境で動作確認をしておきます。
$ FLASK_APP=app.py flask run
Hello World!
と表示されているのでwebアプリはきちんと動くことがわかりました。
最終的にデプロイしたものがこのように表示させることができればデプロイ成功となります。
2. GitHubアカウントの作成
Renderを使用する際にGitHubアカウントが必要になるので事前にアカウント登録をしておきます。
3. GitHubにアプリのレポジトリを作成
Renderで作成したアプリケーションをデプロイするにはGitリポジトリが必要になります。なので、先ほど作成したファイルのリポジトリをここで作成します。
4. Renderアカウントの作成
RenderのHPにアクセスし、自分のアカウントを作成します。
5. デプロイに関する設定
まずDashboard画面の右上にある「New +」と記載されているボタンをクリックし、「New Web Service」を選択します。
次に、下のような画面が出るので「Build and deploy from a Git repository」を選択します。
すると、GitHub上にある自分のレポジトリが表示されるので、今回デプロイしたいレポジトリを選択します。
最後に細かな設定があるのでそれを設定していきます。
Name:デプロイするサービス名を決定します。URLの一部に名前が入ります。
Region:一番日本から近いSingaporeを選択しました。
Branch:デプロイしたいファイルがあるGitのBranchを選択します。
Runtime:使用している言語を選択します。
Build Command:
$ pip install -r requirements.txt
とします。
Start Command:
これはwebアプリを起動するためのコマンドになります。
Flaskでwebアプリを作成していれば
$ gunicorn app:app
と設定します。
FastAPIで作成していればここが
$ uvicorn main:app --host 0.0.0.0 --port $PORT
となります。詳細についてはrenderのドキュメントに記載されています。
最後に「Create Web Service」をクリックしてデプロイされるのを待ちます。
無事にデプロイ完了したらURLが表示されるので、そこにアクセスしてローカルで動かした時と同じ動作をしていればデプロイ完成です。
まとめ
簡単なwebアプリですが、実装からデプロイまで無事に行うことができました。
簡単なものでしたが自分が作ったwebアプリがURLとなって公開されるのはとても嬉しいものですね。感動しました。
デプロイは初めてだったのですが、renderの操作も簡単ですぐにデプロイすることができました。
今回はPythonのFlaskによるアプリのデプロイ方法を整理しましたが、他のフレームワークで作ったものをデプロイする際にStartCommandはどのように設定したらいいのか詳しくは理解できていないのでこれから使いながら学んでいきたいと思います。