1. はじめに|Cloud Runでアプリを公開してみよう!
こんにちは!
この記事では、Googleのクラウドサービス「Cloud Run(クラウドラン)」を使って、自分で作ったアプリをインターネット上に公開する方法をやさしく解説していきます。
最近では、自分で作ったWebアプリやAPIを公開して誰かに使ってもらうということが、個人でもとても簡単にできるようになってきました。その中でも「Cloud Run」は特におすすめのサービスなんです。
なぜかというと……
- サーバーを自分で用意しなくてもOK!
- アクセスが増えたら自動でスケールしてくれる!
- 使わないときはお金がかからない!
- Dockerで自由にアプリを組み立てられる!
などなど、初心者にやさしくて自由度も高いという、まさに“いいとこ取り”なサービスなんですよ。
今回の記事では、こんな流れで進めていきます👇
- Cloud Runってなに?どう便利なの?
- FlaskというPythonのフレームワークでアプリを作ってみる
- そのアプリをDockerで包んでCloud Runにデプロイ!
- データベース(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 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)
- QCloud RunとApp Engineの違いはなんですか?
- A
ざっくり言うと、Cloud Runは「Dockerで自由につくったアプリを動かしたい人向け」、
App Engineは「決まったルールの中でカンタンにアプリを動かしたい人向け」です。比較項目 Cloud Run App Engine カスタマイズ性 高い(Dockerベース) 中〜低(制約あり) 対応言語 ほぼなんでもOK Python, Node.jsなど一部 デプロイ方法 Dockerで自由 シンプルなコマンド1つ 「自由にやりたい」ならCloud Run、「とにかくラクに」ならApp Engineがオススメです!
- QCloud Runは無料でどこまで使えますか?
- A
2025年6月時点では、Cloud Runには以下の無料枠があります:
- 月200万リクエスト
- CPU:360,000秒(約100時間)
- メモリ:180,000秒
- ネットワーク送信:1GB
個人開発や小さなサービスなら、ほぼ無料で運用できます!
- QFlask以外のアプリでもCloud Runで動かせますか?
- A
はい、もちろんです!Cloud Runはコンテナ(Docker)で動くアプリならなんでもOKです。
たとえば:
- FastAPI(Python)
- Node.js
- Go
- Java
- PHP
など、好きな言語・フレームワークで構築できます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。