Cloud RunとPython(Flask)で爆速WEBサイト構築


Cloud RunとPython(Flask)で爆速WEBサイト構築

#週末ハッカソン用のWEBサイトを作成したので公開することにした
AWSやレンタルサーバーなど選択肢は沢山あるが今回はサーバーレスでほぼ無料で運用可能なCloud Runを使うことにした

Google Cloud SDKのインストール

Google Cloud SDK よりダウンロード

ダウンロードディレクトリに移動しsh実行、基本yで進む
インストール後ターミナルを再起動

$ sh install.sh

バージョン確認

$ gcloud version
Google Cloud SDK 321.0.0
bq 2.0.64
core 2020.12.11
gsutil 4.57

SDK設定

ブラウザが開くので操作アカウントでログイン
次に操作プロジェクトを選択

$ gcloud init

プロジェクト変更したい場合

$ gcloud config set project [プロジェクト名]

ビルド

Cloud Build を使用して Docker イメージをビルド
Dockerfile を作成
※ ./app コードはこちら を参考

FROM python:3.7.4

WORKDIR /app
ADD . /app

RUN apt-get update && apt-get clean;

RUN pip install -r requirements.txt

ENV TZ = "Asia/Tokyo"
ENV FLASK_APP /app/app.py
ENV PYTHONPATH $PYTHONPATH:/app

ENV PORT 8080
EXPOSE 8080

CMD ["python", "app.py"]

ビルド実行

$ gcloud builds submit --tag gcr.io/weekend-hackathon/weekend-hackathon

デプロイ

Cloud Run を使いビルドしたコンテナをデプロイ

$ gcloud run deploy weekend-hackathon --project=weekend-hackathon --image=gcr.io/weekend-hackathon/weekend-hackathon --region=us-central1 --platform=managed --no-allow-unauthenticated

Deploying container to Cloud Run service [weekend-hackathon] in project [weekend-hackathon] region [us-central1]
✓ Deploying new service... Done.
  ✓ Creating Revision...
  ✓ Routing traffic...
Done.
Service [weekend-hackathon] revision [weekend-hackathon-00001-teq] has been deployed and is serving 100 percent of traffic.
Service URL: https://weekend-hackathon-leopsotyca-uc.a.run.app

権限を追加

$ gcloud run services add-iam-policy-binding weekend-hackathon --region=us-central1 --member="allUsers" --role="roles/run.invoker" --platform=managed
Updated IAM policy for service [weekend-hackathon].
bindings:
- members:
  - allUsers
  role: roles/run.invoker
etag: BwW5NtPWfrM=
version: 1

URLにアクセスしサイトが表示されれば完了
https://weekend-hackathon-leopsotyca-uc.a.run.app

補足

運用ではdeploy_run.shを作り一括してデプロイできるようにする
ローカルのDocker環境がそのまま公開できるので爆速で公開が可能
また Cloud Runはアクセス単位の料金なので初期リリースには最適是非お試しあれ