クラウドサービスRenderを利用したPythonアプリの無料デプロイ方法

クラウドサービスRender（[https://render.com/](https://render.com/)）を利用した、Pythonアプリを無料でデプロイする方法を紹介します。簡易的なアプリを例に説明します。

## 1 デプロイするファイルの準備
今回はサンプルファイルとして以下2ファイルを利用します。

```main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def index():
    return {"Hello": "World"}
```

```requirement.txt
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**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/40630252-a03a-ec09-8682-ddcc32bb2eeb.png)

**Add file**の**Upload files**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/3721723f-fd07-c58b-f519-c121255e8a01.png)

オレンジのエリアに**main.py**と**requirement.txt**をドラッグアンドドロップし、**Commit changes**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/c71af903-cd45-c2a3-089f-2def39dba605.png)

## 4 Renderアカウントの作成
Renderのアカウントを作成します。
https://dashboard.render.com/

## 5 RenderとGitHubの連携とデプロイ
ログイン後、**New**をクリックし、**Web Service**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/294d1118-639c-8643-2dbd-30534e8e7715.png)

**Connect GitHub**をクリックし、作成したGitHubのアカウントと連携します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/c8d5d1f9-fc19-660c-81ab-31d0580dc5a5.png)

**All repositries**を選択し、**Save**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/0dd055bb-bc69-4001-e58c-7c192d4042f3.png)

デプロイしたいRepositoryの**Connect**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/12893347-4e9f-05a7-dded-04a64418fd01.png)

**Name**に好きな名前を入力します。**Region**は想定される利用者に近いエリアを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/b8c4b2c6-5ed2-89a3-b7e1-25a132346536.png)

**Start Command**に**uvicorn main:app --host 0.0.0.0 --port 10000**を入力し、価格は**Free**を選択し、**Create Web Service**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/593abfcc-8f64-0aef-c64b-7f6545c91ff6.png)

**In Progress**→**Live**になったらデプロイ完了です。左上のURLからアプリケーションにアクセスできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/a622441c-c577-103c-4ea8-462894880634.png)

アクセスした画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/bc92884a-dcc4-cbcc-b0ef-3f83949154b7.png)

## 6 ソースコード修正時の再デプロイ方法
GitHubにログインし、右上のアイコンから**Your repositories**をクリックします。その後、アップロード先のRepository名をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/5f965f19-699c-1b0a-1ccf-a9ff12a68adb.png)

**Add files**の**Upload files**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/0a4cd3c9-0731-591c-035f-64ebf06c1f2f.png)

オレンジのエリアにソースコード修正済ファイルをドラッグアンドドロップし、**Commit changes**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/88d50ab8-5df6-303f-07f6-308c3005105a.png)

Renderで自動的にデプロイ処理が開始されます。Renderのダッシュボード（[https://dashboard.render.com/](https://dashboard.render.com/)）にアクセスします。**Deploy in progress**→**Deploy Succeeded**に変わったらデプロイ完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163239/4e46e452-a19b-804f-099c-23defec639c8.png)

## 補足：無料枠の公式説明
https://render.com/docs/free#free-web-services

## さいごに
ブロックチェーン開発教本（私が制作したもの）では、Detaを使っていたのですが、2023/2/14の仕様変更（Deta Cloud→Deta Space）に伴い、代替サービスとして[Render](https://render.com/)を推奨する形にしました。

https://www.amazon.co.jp/dp/B0B55XSBNZ