クラウドサービスRender(https://render.com/)を利用した、Pythonアプリを無料でデプロイする方法を紹介します。簡易的なアプリを例に説明します。
1 デプロイするファイルの準備
今回はサンプルファイルとして以下2ファイルを利用します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def index():
return {"Hello": "World"}
fastapi==0.70.0
uvicorn==0.13
2 GitHubアカウント作成
まずは、GitHubのアカウントを作成してください。
https://github.com
3 GitHubへのソースコードのアップロード
次にGitHubへのソースコードのアップロードします。ログイン後 https://github.com/new へアクセスします。
下記画像のように、Repository nameに好きな名前を入力します。Add a README fileにチェックします。その後、Create repositoryをクリックします。
Add fileのUpload filesをクリックします。
オレンジのエリアにmain.pyとrequirement.txtをドラッグアンドドロップし、Commit changesをクリックします。
4 Renderアカウントの作成
Renderのアカウントを作成します。
https://dashboard.render.com/
5 RenderとGitHubの連携とデプロイ
ログイン後、Newをクリックし、Web Serviceをクリックします。
Connect GitHubをクリックし、作成したGitHubのアカウントと連携します。
All repositriesを選択し、Saveをクリックします。
デプロイしたいRepositoryのConnectをクリックします。
Nameに好きな名前を入力します。Regionは想定される利用者に近いエリアを選択します。
Start Commandにuvicorn main:app --host 0.0.0.0 --port 10000を入力し、価格はFreeを選択し、Create Web Serviceをクリックします。
In Progress→Liveになったらデプロイ完了です。左上のURLからアプリケーションにアクセスできます。
アクセスした画面
6 ソースコード修正時の再デプロイ方法
GitHubにログインし、右上のアイコンからYour repositoriesをクリックします。その後、アップロード先のRepository名をクリックします。
Add filesのUpload filesをクリックします。
オレンジのエリアにソースコード修正済ファイルをドラッグアンドドロップし、Commit changesをクリックします。
Renderで自動的にデプロイ処理が開始されます。Renderのダッシュボード(https://dashboard.render.com/)にアクセスします。Deploy in progress→Deploy Succeededに変わったらデプロイ完了です。
補足:無料枠の公式説明
さいごに
ブロックチェーン開発教本(私が制作したもの)では、Detaを使っていたのですが、2023/2/14の仕様変更(Deta Cloud→Deta Space)に伴い、代替サービスとしてRenderを推奨する形にしました。