Render というアプリケーションをホスティングするためのクラウドプラットフォームには、Python の Flask アプリケーションを比較的簡単にデプロイすることができます
クラウドプラットフォーム(PaaS)として、WebアプリやAPIのデプロイを簡単に行えるサービスを提供しています
無料で使えるプランもあるので、とりあえずアプリを公開してみたいという人にはちょうどいいと思います
今回はRender に Flask アプリをデプロイする基本的な手順を解説します
1. Flask アプリケーションの準備
まず、Flask アプリを作成します
前回までの記事で使用した、以下のようなディレクトリ構成のFlaskのWEBアプリケーションを使用します
さらにhtmlファイルを少しきれいにするため、cssファイルを追加しました
この辺りは好みで追加してください
project/
├── flaskr/
│ ├── __init__.py # アプリケーションの初期化
│ ├── models.py # データベースのモデル定義
│ ├── views.py # ルートやビューのロジック
│ ├── templates/
│ │ ├── index.html # トップページ
│ │ ├── add.html # タスクの追加
│ │ └── update.html # タスクの編集
│ └── static/
│ └──css/
│ └──styles.css # htmlファイルの装飾用ファイル
└── run.py # アプリケーションの起動スクリプト
2. requirements.txtを作成
次にデプロイ先のRenderでの環境を整えるため、requirements.txtを作成します
requirements.txt は、Python プロジェクトで必要なパッケージ(ライブラリ)を一覧にしたファイルです
このファイルを使用すると、他の環境でも同じパッケージを簡単にインストールできます
また、本番環境ではWEBサーバーを立てる必要があるため、追加でライブラリをインストールします
pip install gunicorn
Gunicorn(Green Unicorn)は、PythonのWSGI(Web Server Gateway Interface)アプリケーション用の高性能なHTTPサーバーです
FlaskやDjangoなどのPythonフレームワークを本番環境で動作させるためによく使用されます
以下のコマンドで、projectディレクトリにrequirements.txtを追加します
pip freeze > requirements.txt
3. Git リポジトリのセットアップ
Flask アプリケーションを Git リポジトリにプッシュする必要があります
以前の記事でGithubのリモートリポジトリの作成、プッシュの解説をしましたので参考にしてください
4. RenderでPostgreSQLを作成
Renderの公式サイトにて、PostgreSQLのインスタンスを作成します
PostgreSQLについては以下の記事で紹介していますので参考にしてください
まずは公式サイトにアクセスします

アカウントを作成またはログインします
git hubと連携するとリポジトリの連携ができるのでおすすめです
「New +」ボタンをクリックし、「PostgreSQL」を選択します
- Name:データベースの名前を付けます
- Region:サーバーの場所を選択します
デフォルトのままでよいと思います - Plan Options Instance Type:お試しの方はFreeの無料プランでよいと思います
他はデフォルトのままで、最後に一番下の Create Databaseをクリックするとデータベースのインスタンスが生成されます
Infoの中の下のほうのConnnectionsにパスワード等が自動的に生成されるので、その中の Internal Database URL をコピーしておきます
Internal Database URLについては以下の記事で解説していますので参考にしてください
5. Render のWEBアプリケーション作成
「New +」ボタンをクリックし、「Web Service」を選択します
GitHubのリポジトリサービスと Render を連携します
デプロイしたいリポジトリを選択します
Web Serviceの設定をします
- Name:サービス名をつけます
- Language: python 3
- Region:先ほどのデータベースと同じが良いと思います
- Build Command: pip install -r requirements.txt
- Start Command::gunicorn -w 4 -b 0.0.0.0:10000 run:app
- このコマンドはプログラムによって変わると思います
自分のrun:appのrunはエントリーポイントのファイル名のrun.pyで、appはその中のインスタンス名です
- このコマンドはプログラムによって変わると思います
- Instance Type:お試しの方はFreeでよいと思います
- Environment Variables:環境変数を指定します
- NAME_OF_VARIABLE:DATABASE_URL
- Value:先ほど生成したPostgreSQLのInternal Database URL
「Create Web Service」をクリックすると、自動的にビルドとデプロイが開始されます
Logsを見ながらエラーが起きていないか確認します
5. デプロイ後の確認
デプロイが完了すると、Render からアプリケーションの URL が提供されます

その URL にアクセスして、Flask アプリケーションが正しく動作していることを確認します
Render は無料プランで小規模なアプリケーションであればコストをかけずにデプロイできます
ただし、無料プランではスリープモードに入るなどの制限がある点に注意してください
コメント