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はアクセス単位の料金なので初期リリースには最適是非お試しあれ