趣味で個人開発を始めたいなと思ってデプロイしやすいサービスを探していました。
renderがいい感じだったので記事にします。
やりたいこと
- Docekrコンテナで作成したFlask製のアプリケーションを「無料」でデプロイしたい
- ローカルで開発しているディレクトリと構成を変えたくない。(Dockerfileだけで構成したい)
- 作成したアプリケーションはGitHubに配置して、更新された度に自動デプロイされたい
- 取得しているドメインを利用したい
- 無償利用している時は、クレジットカード登録はしたくない
サービス選定の話
少し前のブログや技術書ではHerokuが第一候補になっていましたが、2024/05/01現在は無料プランがなくなっています。
最近のQitaやZENNを見ているとCloudflareやVerselも選択肢に上がりましたが、初学者の私にはうまくいきませんでした。
調べてみると、上記のHerokuの変化で空いたスペースをrender.com等の新進気鋭のサービスが狙っているとのことで、選定しました。
無料版だと以下スペックのインスタンスが利用できます。
- CPU:0.1
- RAM:512MB
動的なビジネスサービスでは、厳しいスペックですが趣味レベルで問題ないですね。
デプロイについて
前提
- GitHubのリポジトリに作成したDockerfile&アプリが配置されている。
- ディレクトリ構造
.
├── app
│ ├── app.py
│ ├── static
│ │ ├── images
│ │ │ └── favicon.ico
│ │ ├── main.js
│ │ └── style.css
│ └── templates
│ └── index.html
├── dockerfile
└── requirements.txt
- dockerfile
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY ./app .
CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:8000"]
手順
1:render.comにアカウントを作成する際に、GitHubアカウントを利用してアカウント作成
2:ダッシュボードから「Web Service」を選択
3:「Build and deploy from a Git repository」から「Connect a repository」にて、対象リポジトリを選択
4:デプロイ設定を以下のように設定し、「Create Web Service」を押下
項目 | 値 |
Name | 任意 |
Region | Singapole(日本から一番近いため) |
Branch | master |
Root Directory | - |
Runtime | Docker |
Instance Type | Free |
Environment Variables | - |
5:数分待つと、問題がなければデプロイが完了します。
safariだとデプロイ等の操作をすると、ブラウザがホワイトアウトしますが、更新すれば問題ありません。
6:デプロイが正常に完了すると以下のような画面になります。
カスタムドメインを指定していない場合は、システムから付与されたURLが表示されます。
カスタムドメイン付与
1:Settigs>Custom Domainsにて、利用したいドメインを入力
私はenishiblog.orgというドメインをConoHaで取得しているので、今回はmosaic.enishiblog.orgを利用する想定です。
2:DNSサービスで上記ドメインをCNAMEで登録。
登録が進行すると以下のように状態が遷移します。
- Renderのダッシュボード
- ConoHaのダッシュボード
以上。
上記手順で以下カスタムドメインが利用できます。
上記URLにアクセスするとアップロードした画像にモザイクをかけるだけシステムにアクセスできます。
最後に
renderはすごいですね。
Versel等の複雑さに挫折した人、これから個人開発を始めたい人には最適だと思います。
以上、どなたかのお役に立てば幸いです。