#Cloud Runとは
Google Cloud Next '19 San Francisco で発表された、GCPの新サービス、
Cloud Runを試してみる。
コンテナを作成しデプロイするだけで、サーバレスで実行できるようになるらしい。
コンテナ上でアプリケーションが動くため、どんな言語で作成されたものでも実行可能。
公式チュートリアル
Dockerイメージを作成する
以下の3ファイルを作成
requirements.txt
Flask==1.0.2
gunicorn==19.9.0
Dockerfile
FROM python:3.7
ENV PORT=8080
WORKDIR /usr/src/app
COPY requirements.txt ./
COPY app.py ./
RUN pip install --no-cache-dir -r requirements.txt
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app
app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/<id>')
def hello(word=’World’):
return f'Hello {word}!!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
ビルドして、GCRにプッシュ
PROJECT_ID=<YOUR_PROJECT>
IMAGE=cloud-run-sample
docker build -t gcr.io/${PROJECT_ID}/${IMAGE} .
gcloud docker -- push gcr.io/${PROJECT_ID}/${IMAGE}
デプロイ
GCPコンソールからCloud Runを選択、「CREATE SERVICE」を選択
先程ビルドしたコンテナイメージを選択し、サービス名、ロケーションを入力。
「未認証の呼び出しを許可」にチェックを入れ、作成。
デプロイが終わると、URLが割り当てられるので、ブラウザでアクセスし、
アプリケーションが動いていることが確認できる。
まとめ
コンテナさえあれば簡単にデプロイできる。
初めてアクセスするときは5~10秒くらいかかる。コンテナ起動の時間なのか?
Cloud Functionsとどう使い分けるべきか検証したい。