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 Cloud Run に TypeScript プロジェクトをデプロイする方法

Last updated at Posted at 2024-09-05

はじめに

Google Cloud Run は、Docker コンテナをサポートするスケーラブルな完全マネージド型のサービスです。この記事では、TypeScript で作成したプロジェクトをどのようにして Cloud Run にデプロイするかを解説します。

前提条件

デプロイするためには、以下の準備が必要です。

  1. Google Cloud アカウント
  2. インストール済みのツール: Node.js、TypeScript、Docker、Google Cloud SDK
  3. Docker と Cloud Run の基本的な知識

① TypeScript プロジェクトのセットアップ

まず、簡単な TypeScript プロジェクトを作成します。

mkdir my-cloud-run-app
cd my-cloud-run-app
npm init -y
npm install typescript ts-node express
npx tsc --init

次に、簡単な Express サーバーを src/index.ts に作成します。

import express from 'express';

const app = express();
const port = process.env.PORT || 8080;

app.get('/', (req, res) => {
  res.send('Cloud Run からこんにちは!');
});

app.listen(port, () => {
  console.log(`サーバーはポート ${port} で稼働中です`);
});

② アプリケーションの Docker 化

次に、アプリケーションをコンテナ化するための Dockerfile を作成します。

Dockerfile
# Node.js ベースイメージを使用
FROM node:18

# 作業ディレクトリを設定
WORKDIR /usr/src/app

# package.json をコピーして依存関係をインストール
COPY package*.json ./
RUN npm install

# プロジェクトファイルをコピー
COPY . .

# TypeScript ファイルをビルド
RUN npm run build

# ポートを公開
EXPOSE 8080

# サーバーを起動
CMD ["node", "dist/index.js"]

③ Docker でのローカルビルドとテスト

Docker イメージをビルドします。

docker build -t my-cloud-run-app .

ローカルでアプリをテストします。

docker run -p 8080:8080 my-cloud-run-app

ブラウザで http://localhost:8080 にアクセスして、アプリが動作していることを確認します。

④ GCPへのイメージのプッシュ

まず、Docker を Google Cloud と認証します。

gcloud auth configure-docker

次に、Docker イメージをタグ付けして、Google Container Registry にプッシュします。

docker tag my-cloud-run-app gcr.io/[PROJECT_ID]/my-cloud-run-app
docker push gcr.io/[PROJECT_ID]/my-cloud-run-app

⑤ Cloud Run へのデプロイ

Cloud Run にデプロイするには、2つの方法があります。1つは Dockerfile を使って手動でビルド・プッシュする方法、もう1つは --source オプションを使ってソースコードから直接デプロイする方法です。

1. Docker イメージ

Docker イメージを使用して Cloud Run にアプリケーションをデプロイします。

gcloud run deploy my-cloud-run-app --image gcr.io/PROJECT_ID/my-cloud-run-app --platform managed --region REGION --allow-unauthenticated

デプロイが完了すると、アプリケーションの URL が生成されます。

2. --source オプション

より簡単な方法として、--source オプションを使って、ローカルのソースコードを直接 Google Cloud Build でコンテナ化し、そのまま Cloud Run にデプロイすることも可能です。この方法では、Dockerfile がなくても自動でビルドが行われます。

gcloud run deploy my-cloud-run-app --source . --platform managed --region REGION --allow-unauthenticated

この方法では、手動で Docker イメージをビルドしてプッシュするステップを省略でき、デプロイ手順が簡略化されます。

2つの方法の違い

  1. Docker イメージを使用する方法
    Dockerfile を使ってビルドプロセスを完全に制御したい場合や、特定の依存関係が必要な場合に適しています。この方法では、手動でビルドとプッシュを行うため、柔軟性があります。

  2. --source オプションを使用する方法
    素早くデプロイしたい場合や、Dockerfile を用意する時間を短縮したい場合には、この方法が便利です。Google Cloud Build にビルドを任せるため、手軽にデプロイが行えますが、ビルドに対するカスタマイズは制限されます。

デプロイのコマンドをpackage.jsonに登録すれば便利です。

package.json
{
  "scripts": {
    "deploy": "gcloud run deploy my-cloud-run-app --source . --platform managed --region REGION --allow-unauthenticated"
  }
}

⑥ デプロイのテスト

デプロイ後、GCPコンソールのCloud Runにサービスが表示されます。
image.png

サービス名をクリックすると、URLが表示されます。セキュリティにAuthenticationを下記にしてください。
→Allow unauthenticated invocations
Check this if you are creating a public API or website.
image.png

提供された URL を開いて、アプリケーションが Cloud Run 上で正常に動作していることを確認します。

まとめ

Google Cloud Run を使えば、TypeScript プロジェクトを簡単にデプロイすることができます。さらに、--source オプションを使えば、手軽にデプロイを行うことができ、従来の Dockerfile を使用した手動ビルドによるデプロイと使い分けることで、柔軟かつ効率的な開発フローを実現できます。

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?