🌥️

【GCP】Flask+SQLiteを使用したwebアプリのデプロイ手順

2023/03/31に公開

はじめに

先日CODEGYM Academyのチーム開発プロダクトをデプロイしました。
Flask+SQLiteを使用して「地図上の調べたい場所をクリックすることでその場所の歴史・地理・文化などを知り、視覚的に楽しみながら勉強できるサイト」を作成しました。

せっかく作成したのだから世間に公開してみたいという意欲が沸き、初心者向けバックエンドのデプロイ方法を探しました。
無料かつ簡単にデプロイできる方法としてGoogle Cloud PlatformCloud Runというサービスがあることを知りました。

デプロイ未経験でエラーと格闘しながら何とかデプロイできたので、忘れないためにも手順を記事に残します。

対象者

  • webアプリを作成できる人
  • デプロイ未経験の人

なぜCloud Runを使用したのか

昔はHerokuという無料のデプロイサービスがあったらしいのですが今は有料になっていたので、無料でデプロイできるPaaSを探していました。

AWSやAzure、またGCPの他のサービスではなくCloud Runを使用した理由は二つあります。

  • インフラ初心者でも簡単にデプロイできること
  • 無料でデプロイできること

一つ目に関して、Cloud Runはサーバーレスコンピューティングサービスなのでアプリケーションを簡単にデプロイすることができます。自分でアプリケーションのスケーリングや負荷分散、セキュリティなどの面倒な管理をする必要は無いので適当な個人開発だけでなくちょっとリッチなアプリケーションでも採用しやすそうですね。

また二つ目に関しては、毎月200万リクエストまでは無料(執筆当時)なので小規模アプリであれば実質無料で利用できます。コンテナの実行時間に対して支払いが生じるので、GCEのようにずっと料金がかかるわけではなく、必要な場合にのみ料金が発生するというありがたい仕様になっています。

Cloud Run の料金体系↓

https://cloud.google.com/run/pricing

デプロイ環境

macOS Ventura 13.2.1
Docker version 20.10.17
Google Cloud SDK 421.0.0

Google Cloud SDKは下の準備でインストールしてください。

準備

gcloud CLI をインストール

https://cloud.google.com/sdk/docs/install

M1macでは以下の記事がわかりやすかったです。

https://virment.com/how-to-install-gcloud-command-to-macos/

GCPアカウントにサインアップ

https://cloud.google.com/

プロジェクトの作成

https://cloud.google.com/resource-manager/docs/creating-managing-projects

Cloud Build APIを有効化

左上にあるナビゲーションメニューから「全てのプロダクトを表示」を選択して

CI/CDの欄からCloud Buildを押して、その先でAPIを有効化します。


ここからターミナルに移ります

gcloudを最新バージョンにアップデート

場所は任意

gcloud components update

初期設定

場所は任意

gcloud init

ログインするか聞かれるのでYを押して言われた通りに進めていく

Cloud Run サービスのプロジェクトを設定

場所は任意
<project id>は自身のプロジェクトIDに置き換えてください

gcloud config set project <project id>

確認コマンド

この項目は飛ばしていただいて構いません

自分のプロジェクトを一覧で表示

gcloud projects list

設定されたプロジェクトの情報を表示

gcloud config list

アプリケーションの作成

ディレクトリ名は自分が作成したプロダクトのサービス名にしておくと後々楽になります。
最初に試すときは以下のサンプルアプリケーションのコードを使用するといいでしょう。

https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-python-service?hl=ja#writing

アプリが完成したらいよいよデプロイします。

デプロイ

こちらの流れに沿っていきます↓

https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-python-service?hl=ja#deploy

作成したアプリケーションの一番上の階層でデプロイ

gcloud run deploy

基本的に言われた通りに進めていきます。

  1. API有効化 --> y
  2. ソースコードの場所 --> 指定するかもしくは現在のフォルダをにソースがあれば何も入力せずにEnter
  3. サービス名 --> ディレクトリ名をサービス名にしていたら()の中にデフォルトでサービス名が入っているのでそのまま何も入力せずEnter
  4. Artifact Registry API有効化 --> y
  5. 地域選択 --> 日本では「asia-northeast1(東京)」「asia-northeast2(大阪)」があるのでどちらかを選択
  6. 未認証の呼び出し許可 --> y

アプリによりますがデプロイまでに数十分は時間がかかります。
デプロイが終了するとURLが表示されるのでWebブラウザで開いて確認してください。

環境変数の設定方法

ナビゲーションメニューからCloud Runに飛びます。

サービス名をクリックした後に、「新しいリビジョンの編集とデプロイ」 をクリックします。

コンテナタブに環境変数の欄があるので入力します。

他は何も編集せずに一番下にある「デプロイ」ボタンをクリックします。

以上で環境変数が設定されます。

おわりに

インフラ知識もデプロイ経験もない私ですが「GCPとはなんぞや、PaaSとは?」から始めて実働二日間でデプロイすることができました。
大量のエラーに遭遇したのですが2回目に別サービスをデプロイするときは流れに沿って一瞬でデプロイできました。本当Cloud Run様様ですね〜。

最後まで読んでいただきありがとうございました!

Discussion