一身上の都合により

プログラミングとかの話

Unubo を使ってみた

:warning:この記事は2019/09/30 にQiita に投稿したものです

先日paiza開発日誌で紹介されていたUnuboを使って簡単なサービスをデプロイしてみました。

このUnubo、まだ日本では全然広まっていないようですが、完全無料で「1 GB RAM, 1 CPU, and 500 MB storage」のサーバーを無料で複数利用できてめっちゃ便利です。 今後有料版のプランもリリースされていくようです(公式Twitterより)。

とりあえず今回はサンプルのflaskアプリケーションをデプロイしてみましょう。

構成

Unubo Apps Python Python 3.7 Flask 0.12

手順

Unubo App の作成

スクリーンショット 2019-09-30 6.46.44.png RegionはとりあえずAsiaで。

Data storeのドキュメントに

Please not that databases can only be accessed from apps within the same region.

という記述があったので、DBも使うつもりの方はRegionを合わせましょう。

デプロイ設定

Repository

スクリーンショット 2019-09-30 6.52.50.png RepositoryのCONNECTからGitHubのデプロイ用リポジトリを選択しましょう。

Deployment settings(Commands)

アプリの起動用のコマンドを記述しましょう。 後述しますが、Unuboのサンプルコード通りとするなら

python app.py

gunicornを使用するなら

gunicorn app:app

としておきましょう。

Secrets

スクリーンショット 2019-09-30 7.12.03.png

ここに環境変数をセットできます。 また、コード中で呼び出す際は os.environ.get を使用すればおkです。

SECRET = os.environ.get('SECRET') # 'SECRET_VALUE'
SECRETS = json.loads(os.environ.get('SECRETS')) # ディクショナリで取得できる

Domains と Monitor は使用していませんm(._.)m

コード

公式のドキュメントが、flaskのサンプルコードを公開してくれています。

import os
from flask import Flask, render_template

app = Flask(__name__)

# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))

@app.route('/')
def hello():
    # return 'Welcome to Python on Unubo Cloud'
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=port)
Flask==0.12

コードをGitHubにpushして、Deployボタンを押下すれば{app名}.unubo.appにデプロイされます。

試しに作ったもの

IPAカウントダウン IPA試験までの時間をカウントダウンをしています。 デザイン手抜きです(UIKit使い方よくわかってない)。 また実装したAPIをGoogleAppsScriptから叩いて、IPAカウントダウンbotが7時台、12時台、19時台にカウントダウンツイートをするようにしています。

感想

デプロイでそんなにつまることもなかったしUIもすっきりしていて使いやすいです。 これを無料で使えるのは素晴らしい。 公式Twitterエゴサしっかりしていて、めっちゃリプライくれるのも好感もてます。