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?

Google CloudRunにREST APIアプリをデプロイする

Last updated at Posted at 2024-11-20

Google CloudRunにREST APIアプリをデプロイしました

ChatGPTに教えてもらいながら作業してました。

なので、ChatGPTのログをシェアします。
Cloud Runは、課金してなくてもとりあえず動きそうです!
https://chatgpt.com/share/673da57a-9c48-8002-925d-2c07670fed90
https://chatgpt.com/share/673da67f-9fcc-8002-9209-dc957dbfbba9

私の備忘録

pip install fastapi uvicorn python-dotenv pymongo youtube_transcript_api
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pymongo import MongoClient
from dotenv import load_dotenv
from youtube_transcript_api import YouTubeTranscriptApi
import json

load_dotenv()

app = FastAPI()

# CORSミドルウェアを追加して、他のドメインからのリクエストを受け入れられるように設定
origins = [
    "http://localhost",
    "http://localhost:8080",
    "http://127.0.0.1:8000",
]
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,  # 許可するオリジンを指定
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 字幕を取得する関数
def get_transcript(video_id: str):
    try:
        # 字幕を取得 (日本語字幕を優先)
        transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['ja'])

        text = ""
        if transcript:
            for item in transcript:
                text += item["text"]
        else:
            print("字幕が見つかりませんでした。")

        text1 = {"text": text}
        # 字幕のリストを返す
        return json.dumps(text1, ensure_ascii=False)
    except Exception as e:
        print(f"字幕の取得に失敗しました: {e}")
        return {"error": "字幕の取得に失敗しました"}

# videoIdをクエリパラメータとして受け取るエンドポイント
@app.get("/transcript")
async def get_video_transcript(videoId: str):
    res = get_transcript(videoId)
    return res
  • ローカルでアプリ起動
    uvicorn app.main:app --reload
  • 稼働確認
    アプリが http://127.0.0.1:8000 で起動します。
  • curlで確認
    curl "http://127.0.0.1:8000/transcript?videoId=動画ID"
  • コンテナ

  • ビルド
    docker build --no-cache -t my-fastapi-app .

  • docker起動
    docker run -d -p 8080:8080 my-fastapi-app

  • 稼働確認
    アプリが http://127.0.0.1:8080 で起動します。

  • 異常時に確認
    docker logs <container_id>

  • 実行中および停止したコンテナをリスト表示
    docker ps -a

  • 不要なコンテナを停止
    docker stop <container_id>

  • 不要なコンテナを削除
    docker rm <container_id>

  • イメージにタグを付ける

  • Google Cloud Container Registry (GCR) にプッシュするためには、タグを付ける必要があります
    docker tag my-fastapi-app gcr.io/cloudrun01/my-fastapi-app:latest

  • イメージをプッシュ

  • タグ付けが完了したら、次にそのイメージをGCRにプッシュします。
    docker push gcr.io/cloudrun01/my-fastapi-app:latest

  • Cloud Runにデプロイ

  • 次に、Cloud Runに新しいバージョンをデプロイします。gcloud run deployコマンドを実行します。
    gcloud run deploy my-fastapi-app \ --image gcr.io/cloudrun01/my-fastapi-app \ --platform managed \ --region asia-northeast2 \ --allow-unauthenticated

  • 本番稼働確認
    https://my-fastapi-app.run.app/transcript?videoId=tRgpuON_CsI

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?