0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのデプロイ(GCP)

Last updated at Posted at 2025-10-31

はじめに

生成AIについて学習する際に作ったアプリをポートフォリオにするため、GCPへデプロイしました。

デプロイ自体が初めてだったので備忘録としてかきました。

アプリについて

PythonでAIチャットボットを作りました。
アプリはStreamlitを使って作っています。

使用した言語・サービス

  • OS
    • windows11
  • Python
    • LangChain
    • Streamlit
  • GCP
    • Cloud Run API
    • Cloud Build API(ビルド実行)
    • Artifact Registry API(コンテナ保管)
    • Secret Manager (GeminiのAPIキー用)

フォルダ構成

app/
 ├─ app.py
 ├─ requirements.txt
 └─ Dockerfile

各コードやアプリの詳細については割愛します。

デプロイ前の準備

  • ローカル環境
    • Google Cloud SDKをインストール
  • GCP側の初期設定
    • GCPのアカウントを作成
    • 無料トライアルを開始し、課金設定をする

無料トライアルのクレジットを使用するには、1,500円以上のデポジットが必要

カードでの支払いがGoogleから本人確認の承認をされないとできず、ここで2日待つことに。。

2日後、、、いざデプロイへ

(GCP)新しいプロジェクトを作成

初期プロジェクトでもよかったのですが、新たに作成。
プロジェクト作成後、今回使うAPIを有効化

  • Cloud Run API
  • Cloud Build API(ビルド実行)
  • Artifact Registry API(コンテナ保管)
  • Secret Manager

(ローカル)gcloudの初期化

PowerShellを開いて以下を実行

# Googleアカウント認証
gcloud auth login

# プロジェクトを設定
gcloud config set project <PROJECT_ID>

# デフォルトのリージョンを東京に
gcloud config set run/region asia-northeast1

(ローカル)DockerFileを作成

開発時はvenvを使っていたため、デプロイ用にDockerFileを作成
Cloud Runで動かすアプリケーションは環境変数"PORT"を取得して、その番号のポートで待ち受けるようにします

FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .

EXPOSE 8080
ENV PORT=8080

CMD ["bash", "-lc", "streamlit run app.py --server.address=0.0.0.0 --server.port=${PORT}"]

(ローカル)Artifact Registryにリポジトリ作成

ロケーションは東京を指定
リポジトリ名は任意の名前でOK

gcloud artifacts repositories create <リポジトリ名> \
    --repository-format=Docker --location=asia-northeast1

(ローカル)Cloud Buildでコンテナをビルド&push

cd <DockerFileがある作業ディレクトリ>
gcloud builds submit --tag asia-northeast1-docker.pkg.dev/<PROJECT_ID>/<リポジトリ名>/<サービス名>

(ローカル)環境変数を設定

APIキーをSecret Managerへ登録

gcloud secrets create GOOGLE_API_KEY --replication-policy=automatic
gcloud secrets versions add GOOGLE_API_KEY --data-file=-

標準入力へGeminiのAPIキーをコピペ➡ctrl+Z➡Enter

Cloud Run が読むために権限を付与

gcloud projects add-iam-policy-binding <PROJECT_ID> \
  --member=serviceAccount:<PROJECT_NUMBER>-compute@developer.gserviceaccount.com \
  --role=roles/secretmanager.secretAccessor

(ローカル)Croud Runへデプロイ

いよいよデプロイ
コマンド引数は以下

  • --allow-unauthenticated:誰でもURLでアクセスできるように公開
  • --min-instances:0ならコールドスタート、1以上で常時起動
    • 無料枠運用のため、0を指定
  • --set-secrets GOOGLE_API_KEY:上で設定した環境変数
gcloud run deploy <サービス名> \
    --image asia-northeast1-docker.pkg.dev/<PROJECT_ID>/<リポジトリ名>/<サービス名> \
    --region asia-northeast1 --platform managed --allow-unauthenticated \
    --min-instances 0 --set-secrets GOOGLE_API_KEY=GOOGLE_API_KEY:latest

コマンド実行後、サービスのURLが表示される

おわりに

以上がデプロイまでに行った手順です。
支払いの部分以外では詰まることなく最後までいけました。ChatGPTさまさまです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?