スポンサーリンク

Cloud Runで簡単デプロイ!Dockerコンテナを使ったFlaskアプリの公開方法【初心者向け】

Webアプリ開発
  1. 1. はじめに|Cloud Runでアプリを公開してみよう!
  2. 2. Cloud Runとは?初心者向けにざっくり解説
    1. 🌤 Cloud Runってなに?
    2. ✅ Cloud Runのいいところ
    3. ⚠ Cloud Runの注意点も知っておこう
    4. 🛠 こんなときにCloud Runがぴったり!
  3. 3. デプロイするFlaskアプリの準備
    1. 🍳 まずは材料(ファイル)をそろえよう!
    2. 🐍 ① Flaskアプリを作成しよう(main.py)
    3. 📦 ② 必要なライブラリを記述(requirements.txt)
    4. 🐳 ③ Dockerfileを作ろう
    5. ✅ 動作確認しておこう!
  4. 4. Google Cloudの環境を準備する
    1. 🌐 ① Google Cloudのプロジェクトを作成・選択する
    2. 💻 ② gcloud CLIをインストールする
      1. ▷ インストール方法(Windows/Mac/Linux対応)
      2. ▷ インストールできたらログイン!
    3. 🧰 ③ 必要なAPIを有効化する
    4. 📦 ④ Artifact Registryを作成する(Dockerイメージの置き場所)
    5. 🔐 ⑤ DockerからGCPにログインする設定
  5. 5. DockerイメージをビルドしてCloud Runにデプロイ
    1. 🐳 ① Dockerイメージをビルドしよう
    2. 🔖 ② タグをつける(GCPのレジストリ用URL)
    3. 📤 ③ Dockerイメージをアップロード(push)
    4. ☁ ④ Cloud Runサービスを作成してデプロイ!
    5. 🔗 ⑤ 公開されたURLを確認しよう!
  6. 6. 動作確認とスケーリングの確認方法
    1. ✅ ① ブラウザで動作確認しよう
    2. 📈 ② Cloud Consoleでリソースの状態を見る
      1. ▷ Cloud Run画面を開く
      2. ▷ 「指標」タブを見ると…
    3. 🔁 ③ オートスケーリングを確認してみよう!
    4. 💡 おすすめ:k6で簡単な負荷テスト
      1. ▷ k6のインストール(Homebrewがある場合)
      2. ▷ 簡単な負荷テストスクリプト(test.js)
      3. ▷ テスト実行
    5. ☁ ④ 動かしてないときは勝手に止まる!
  7. 7. まとめ|Cloud Runで手軽にコンテナ運用をはじめよう
    1. ✅ Cloud Runのいいところをおさらい!
    2. 💡 学んだことは他にも応用できる!
  8. よくある質問(Q&A)
    1. 関連投稿:

1. はじめに|Cloud Runでアプリを公開してみよう!

こんにちは!
この記事では、Googleのクラウドサービス「Cloud Run(クラウドラン)」を使って、自分で作ったアプリをインターネット上に公開する方法をやさしく解説していきます。

最近では、自分で作ったWebアプリやAPIを公開して誰かに使ってもらうということが、個人でもとても簡単にできるようになってきました。その中でも「Cloud Run」は特におすすめのサービスなんです。

なぜかというと……

  • サーバーを自分で用意しなくてもOK!
  • アクセスが増えたら自動でスケールしてくれる!
  • 使わないときはお金がかからない!
  • Dockerで自由にアプリを組み立てられる!

などなど、初心者にやさしくて自由度も高いという、まさに“いいとこ取り”なサービスなんですよ。

今回の記事では、こんな流れで進めていきます👇

  1. Cloud Runってなに?どう便利なの?
  2. FlaskというPythonのフレームワークでアプリを作ってみる
  3. そのアプリをDockerで包んでCloud Runにデプロイ!
  4. データベース(Cloud SQL)ともつないでみる

「えっ、なんだか難しそう…?」と思うかもしれませんが、大丈夫!
1つずつ順番に進めれば、必ずできるようになります!

「作ったアプリを世界に公開してみたい!」という方は、ぜひ一緒にチャレンジしてみてくださいね😊




2. Cloud Runとは?初心者向けにざっくり解説

さて、まずはCloud Run(クラウドラン)ってそもそも何なの?というところから確認しておきましょう!

🌤 Cloud Runってなに?

Cloud Runは、Googleが提供しているクラウド上でアプリを動かせるサービスです。
とくに「Dockerコンテナ」と呼ばれる形にまとめたアプリを、めちゃくちゃ簡単に公開できるのが特徴です。

「コンテナってなに?」と思った方は、ざっくりこう考えてください👇

コンテナ=アプリとその動かす環境をセットにした“お弁当箱”みたいなもの!

この「お弁当箱(コンテナ)」を作って、Cloud Runに渡すと、自動的にいい感じにサーバーに載せてくれるんです🍱✨


✅ Cloud Runのいいところ

Cloud Runには、こんなメリットがあります:

特徴説明
インフラの知識がなくてもOK!サーバーの設定などを自分でやる必要はありません。
アクセスに応じて自動スケーリングアクセスが増えたら自動でインスタンス(作業用マシン)を増やしてくれます。
使っていないときは停止&課金なし!アクセスがない間は止まっているので、お金もかかりません。
無料枠が大きい!たとえば月に200万リクエストまで無料!個人開発なら十分な量です。

⚠ Cloud Runの注意点も知っておこう

便利なCloud Runですが、いくつか注意しておきたいポイントもあります:

  • コールドスタート問題
    → アクセスがまったくない状態から再起動するのに少し時間がかかるときがあります。
  • 細かいインフラ設定はできない
    → たとえば、メモリの使い方やサーバーの細かい設定を自由にしたいなら、GKE(Google Kubernetes Engine)のほうが向いています。

🛠 こんなときにCloud Runがぴったり!

Cloud Runは、特にこんなケースに向いています:

  • Pythonで作ったWeb APIやアプリをサクッと公開したいとき
  • データベースとつないでちょっとしたバックエンドサービスを作りたいとき
  • サーバーレスで費用をおさえて運用したいとき

ということで、Cloud Runがどんなサービスか、なんとなくイメージがつかめたでしょうか?

次は、実際に動かすアプリ(Flask)を用意して、それをコンテナ化していくところから始めましょう!




3. デプロイするFlaskアプリの準備

ここからは実際に、Cloud Runにのせるアプリを作っていきます!
今回は、**PythonのFlask(フラスク)**という軽量フレームワークを使って、簡単なWeb APIを作ってみましょう。

🍳 まずは材料(ファイル)をそろえよう!

以下の3つのファイルを用意します👇

ファイル名説明
main.pyアプリの本体(Pythonコード)
requirements.txt必要なライブラリを書いたファイル
Dockerfileコンテナの作り方を書いたファイル

🐍 ① Flaskアプリを作成しよう(main.py)

# main.py
from flask import Flask
import os

app = Flask(__name__)

@app.route("/")
def hello():
return "こんにちは!Cloud Run からのメッセージです。"

if __name__ == "__main__":
port = int(os.environ.get("PORT", 8080))
app.run(host="0.0.0.0", port=port)

ポイント:

  • PORT という環境変数からポート番号を取得しています(Cloud Runでは必須!)
  • / にアクセスしたときに「こんにちは!」と表示するだけのシンプルなAPIです。

📦 ② 必要なライブラリを記述(requirements.txt)

Flask==2.3.3
gunicorn==21.2.0

FlaskをWebアプリ用に、gunicornを本番用の起動サーバーとして使います。


🐳 ③ Dockerfileを作ろう

# Pythonの公式イメージを使う
FROM python:3.10-slim

# 作業ディレクトリを作成
WORKDIR /app

# ファイルをコピー
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# ポートの指定(環境変数PORTを使用)
ENV PORT=8080
EXPOSE 8080

# アプリを起動するコマンド
CMD ["gunicorn", "-b", "0.0.0.0:8080", "main:app"]

ポイント:

  • コンテナの中にFlaskアプリをコピーして、gunicornで起動するようにしています。
  • EXPOSE 8080 としているのはCloud Runでアクセスを受け取るための準備です。

✅ 動作確認しておこう!

この3つのファイルがそろったら、次のコマンドでローカル環境でも動かせます👇

docker build -t my-flask-app .
docker run -p 8080:8080 my-flask-app

そのあと、ブラウザで http://localhost:8080 にアクセスして、「こんにちは!」と表示されれば成功です!

次は、このコンテナをGoogle Cloudにアップロードしていく準備をします。
「gcloud CLIの設定や環境構築」の部分へ進んでいきましょう!




4. Google Cloudの環境を準備する

さて、FlaskアプリとDockerの準備ができたので、次はそれをGoogle Cloud(GCP)にアップロードするための準備をしていきます!

「えっ、クラウドの設定って難しそう…」と思うかもしれませんが、大丈夫!
1つずつやれば、初心者でもちゃんとできますよ 😊


🌐 ① Google Cloudのプロジェクトを作成・選択する

まずはGCP公式コンソールにアクセスし、プロジェクトを作成するか、すでにあるプロジェクトを選びます。

プロジェクト名はなんでもOKですが、今回は例として flask-cloudrun-demo にしておきましょう。


💻 ② gcloud CLIをインストールする

Cloud Runの操作は、**コマンドラインツール「gcloud CLI」**を使うととても便利です。

▷ インストール方法(Windows/Mac/Linux対応)

公式の手順にしたがってインストールできます:

👉 gcloud CLI インストールガイド

▷ インストールできたらログイン!

gcloud init

このコマンドを実行すると、ブラウザが開いてGoogleアカウントにログインできます。
プロジェクトを選ぶ画面も出てくるので、さっき作ったプロジェクトを選択してください!


🧰 ③ 必要なAPIを有効化する

Cloud Runやコンテナの操作には、以下のAPIが必要です:

gcloud services enable run.googleapis.com \
artifactregistry.googleapis.com \
sqladmin.googleapis.com

これでCloud Run、Artifact Registry、Cloud SQLが使えるようになります。


📦 ④ Artifact Registryを作成する(Dockerイメージの置き場所)

Google Cloud上に、コンテナイメージを保存しておくレジストリを作成します。

gcloud artifacts repositories create flask-repo \
--repository-format=docker \
--location=asia-northeast1 \
--description="Flask用のレポジトリ"
  • flask-repo がレポジトリの名前
  • asia-northeast1 は東京リージョンです

🔐 ⑤ DockerからGCPにログインする設定

ローカルのDockerからGCPのレジストリにアクセスできるようにします:

gcloud auth configure-docker asia-northeast1-docker.pkg.dev

これで、あとで docker push するときに認証エラーにならなくなります。

これで、Cloud RunにデプロイするためのGoogle Cloud側の準備がバッチリ整いました!




5. DockerイメージをビルドしてCloud Runにデプロイ

ここまでくれば、あとは「作ったDockerコンテナをGoogle Cloudにアップロード → Cloud Runでデプロイ」するだけです!

少し手順が多いですが、落ち着いて進めていけば大丈夫ですよ😊


🐳 ① Dockerイメージをビルドしよう

まずは、作成したDockerfileを使って、ローカルでコンテナイメージを作ります。

docker build -t flask-demo .

このコマンドで、現在のフォルダ(.)にあるファイルを使って「flask-demo」という名前のDockerイメージを作成します。


🔖 ② タグをつける(GCPのレジストリ用URL)

Google Cloudにアップロードするには、特定の形式のタグをつける必要があります。

docker tag flask-demo asia-northeast1-docker.pkg.dev/PROJECT-ID/flask-repo/flask-demo
  • PROJECT-ID は自分のGCPプロジェクトIDに置き換えてください(例:my-gcp-project-1234)。
  • flask-repo は前に作ったレジストリ名です。

📤 ③ Dockerイメージをアップロード(push)

タグをつけたら、それをGoogle Cloudにアップロードします。

docker push asia-northeast1-docker.pkg.dev/PROJECT-ID/flask-repo/flask-demo

これで、Cloud Runが使えるようにイメージがクラウドに登録されました🎉


☁ ④ Cloud Runサービスを作成してデプロイ!

最後に、Cloud Runのサービスを作成します。

gcloud run deploy flask-service \
--image asia-northeast1-docker.pkg.dev/PROJECT-ID/flask-repo/flask-demo \
--platform managed \
--region asia-northeast1 \
--allow-unauthenticated

オプションの意味はこんな感じです:

  • --image:使うDockerイメージの場所
  • --platform managed:Googleが管理してくれるモード
  • --region:東京リージョン(asia-northeast1
  • --allow-unauthenticated:誰でもアクセスできるようにする設定

🔗 ⑤ 公開されたURLを確認しよう!

デプロイが完了すると、コマンドラインに次のようなURLが表示されます:

Deploying... Done.
Service [flask-service] revision [flask-service-00001-xxxxx] has been deployed and is serving 100 percent of traffic at:
https://flask-service-xxxxx-aaaaa.a.run.app

このURLにブラウザでアクセスすると……

🎉「こんにちは!Cloud Run からのメッセージです。」と表示されれば成功です!




6. 動作確認とスケーリングの確認方法

Cloud Runにアプリをデプロイできたら、いよいよ最後のステップです!
ちゃんと動いているか、そしてCloud Runならではの「オートスケーリング」が働くかを確認してみましょう👀


✅ ① ブラウザで動作確認しよう

前のステップで表示されたURLを、ブラウザにコピーしてアクセスしてみてください。

https://flask-service-xxxxx-aaaaa.a.run.app

うまくいっていれば、画面にこう表示されるはずです:

「こんにちは!Cloud Run からのメッセージです。」

見えたらOK!ちゃんとインターネット上でアプリが公開されてます✨


📈 ② Cloud Consoleでリソースの状態を見る

次に、Cloud Runのモニタリング画面でアプリの動きや負荷を見てみましょう。

▷ Cloud Run画面を開く

Google Cloud ConsoleのCloud Runページを開きます。
作成したサービス(例:flask-service)をクリック!

▷ 「指標」タブを見ると…

  • リクエスト数(どれくらいアクセスが来たか)
  • インスタンス数(同時に何台のマシンで動いているか)
  • CPU使用率やメモリ使用量

などがグラフで見られます📊


🔁 ③ オートスケーリングを確認してみよう!

Cloud Runの特徴のひとつが自動スケーリング
アクセスが増えると、自動的にインスタンスが増えていきます!

これを確認するために、ちょっと負荷をかけてみましょう。


💡 おすすめ:k6で簡単な負荷テスト

k6 というツールを使えば、数十〜数百のアクセスを一気に送るテストができます。

▷ k6のインストール(Homebrewがある場合)

brew install k6

▷ 簡単な負荷テストスクリプト(test.js)

import http from 'k6/http';

export default function () {
http.get('https://flask-service-xxxxx-aaaaa.a.run.app');
}

▷ テスト実行

k6 run test.js

これを実行したあとに、Cloud Consoleの指標タブを見てみると……

⬆ インスタンス数が増えてる!

Cloud Runがアクセスの増加に自動対応していることがわかります👏


☁ ④ 動かしてないときは勝手に止まる!

しばらくアクセスしないで放置しておくと、Cloud Runはコンテナを自動で停止します。
これも、無駄なコストを減らしてくれるポイントですね!

これで、Cloud Runの「動作確認」と「スケーリング確認」はばっちりです💡




7. まとめ|Cloud Runで手軽にコンテナ運用をはじめよう

おつかれさまでした!ここまで読みながら実践してくれた方、本当にすごいです👏

この記事では、PythonのFlaskアプリをDockerで包んで、Google CloudのCloud Runにデプロイする流れを紹介しました。
はじめての方でも「インターネットに公開できた!」という体験ができたのではないでしょうか😊


✅ Cloud Runのいいところをおさらい!

  • サーバーいらずで、アプリをすぐ公開できる
  • 必要なときだけ動くからコストも節約できる
  • Dockerを使えば自由にアプリを組める
  • スケーリングも自動で対応してくれる

しかも、無料枠も大きいので、個人開発や趣味アプリにもピッタリなんです。


💡 学んだことは他にも応用できる!

今回学んだ内容は、こんな場面でも役立ちます👇

  • Flask以外のフレームワーク(FastAPIやNode.js)にも応用できる
  • Cloud SQLなどのクラウドサービスとの連携もできる
  • CI/CDや自動デプロイにも発展できる(→[Cloud Build]など)

Cloud Runを使ったことで、「クラウドでアプリを動かす」ことのハードルが下がったはずです。
次のステップとして、**LINE BOTや非同期処理(Cloud Tasks)**へのチャレンジもおすすめですよ!


よくある質問(Q&A)

Q
Cloud RunとApp Engineの違いはなんですか?
A

ざっくり言うと、Cloud Runは「Dockerで自由につくったアプリを動かしたい人向け」、
App Engineは「決まったルールの中でカンタンにアプリを動かしたい人向け」です。

比較項目Cloud RunApp Engine
カスタマイズ性高い(Dockerベース)中〜低(制約あり)
対応言語ほぼなんでもOKPython, Node.jsなど一部
デプロイ方法Dockerで自由シンプルなコマンド1つ

「自由にやりたい」ならCloud Run、「とにかくラクに」ならApp Engineがオススメです!

Q
Cloud Runは無料でどこまで使えますか?
A

2025年6月時点では、Cloud Runには以下の無料枠があります:

  • 月200万リクエスト
  • CPU:360,000秒(約100時間)
  • メモリ:180,000秒
  • ネットワーク送信:1GB

個人開発や小さなサービスなら、ほぼ無料で運用できます!

Q
Flask以外のアプリでもCloud Runで動かせますか?
A

はい、もちろんです!Cloud Runはコンテナ(Docker)で動くアプリならなんでもOKです。

たとえば:

  • FastAPI(Python)
  • Node.js
  • Go
  • Java
  • PHP

など、好きな言語・フレームワークで構築できます。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク