DoccanoをGoogle Cloud Runにデプロイする手順
このガイドでは、DoccanoをGoogle Cloud Runにデプロイするプロセスをステップバイステップで説明します。このプロセスには、Google Cloud BuildとGoogle Cloud Source Repositoriesの設定も含まれます。
前提条件
- Google Cloud Platformのアカウントがあること。
-
gcloud
コマンドラインツールがインストールされ、設定されていること。
1. Cloud Source Repositories リポジトリの作成
- Google Cloud Console にアクセスして、プロジェクトを選択します。
- ナビゲーションメニューから Source Repositories を選択し、リポジトリを表示 をクリックします。
- リポジトリを追加 ボタンをクリックして、新しいリポジトリを作成します。
- リポジトリに名前を付け(例:
my-project-repo
)、必要な設定を行い、作成 をクリックします。
2. ローカル Git リポジトリの設定
ローカルで作業しているプロジェクトがまだ Git リポジトリとして初期化されていない場合は、以下のコマンドを使用して初期化します。
git init
git add .
git commit -m "Initial commit"
3. Google Cloud Source Repositories とのリンク
作成したリポジトリをローカル Git リポジトリにリンクするには、次のコマンドを使用します。これにより、Google Cloud Source Repositories の URL がリモートリポジトリとして追加されます。
git remote add google https://source.developers.google.com/p/[PROJECT_ID]/r/[REPOSITORY_NAME]
ここで、[PROJECT_ID]
は Google Cloud プロジェクトの ID、[REPOSITORY_NAME]
は作成したリポジトリの名前に置き換えてください。
4. コードのプッシュ
ローカルの変更を Cloud Source Repositories にプッシュするには、次のコマンドを使用します。
git push google master
このコマンドは、ローカルの master
ブランチの変更をリモートの master
ブランチにプッシュします。必要に応じて、異なるブランチ名を指定することができます。
これで、Google Cloud Source Repositories へのプッシュが完了し、Cloud Build などの他のサービスでこれらのソースコードを使用することができるようになります。
git push goolge masterを実行すると新しい認証URLが表示されることがあります。
その場合はURLを開いてログインして認証スクリプトを全てターミナルで実行します。
Cloud Build の設定
Cloud Build の設定と cloudbuild.yaml
ファイルの作成について詳細に説明します。まず、Cloud Build に必要なサービスアカウントを設定し、その後で cloudbuild.yaml
ファイルを作成する手順を踏みます。
1. サービスアカウントの作成と設定
Cloud Build が他の Google Cloud サービスと連携するためには、適切な権限を持つサービスアカウントが必要です。以下の手順でサービスアカウントを作成し、必要なロールを割り当てます。
サービスアカウントの作成:
- Google Cloud Console にログインします。
- ナビゲーションメニューから IAM と管理 > サービスアカウント を選択します。
- ページ上部の + サービスアカウントを作成 をクリックします。
- サービスアカウントの名前を入力し、必要に応じて説明を追加します。
- 作成 をクリックして、次の画面でサービスアカウントの詳細を設定します。
必要なロールの割り当て:
-
Cloud Build の実行には通常、以下のロールが必要です:
-
Cloud Build エディタ(
roles/cloudbuild.builds.editor
): これにより、Cloud Build がビルドを実行し、関連するリソースにアクセスすることが可能になります。 -
ストレージ オブジェクト管理者(
roles/storage.objectAdmin
): ビルドプロセス中にアーティファクトやソースコードを Cloud Storage に読み書きする権限を提供します。
-
Cloud Build エディタ(
-
サービスアカウント作成後、IAM でサービスアカウントを選択し、役割を追加 をクリックして上記のロールを追加します。
-
変更を保存します。
2. cloudbuild.yaml
ファイルの作成
cloudbuild.yaml
ファイルは、Cloud Build が実行するビルドの手順を定義します。以下は基本的な cloudbuild.yaml
の例です。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['version']
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/my-image', '.']
images:
- 'gcr.io/$PROJECT_ID/my-image'
この例では、次のことが行われます:
-
gcloud
コマンドを使用してバージョン情報を出力します。 - Docker を使用してイメージをビルドし、Google Container Registry にプッシュします。
cloudbuild.yaml
ファイルをプロジェクトに追加:
- 上記の内容を
cloudbuild.yaml
ファイルに保存し、プロジェクトのルートディレクトリに配置します。 - Cloud Source Repositories や GitHub など、Cloud Build がアクセスできるリポジトリにプッシュします。
これで、Cloud Build が cloudbuild.yaml
ファイルに基づいてビルドを実行できるようになります。
ステップ 3: Artifact RegistryでのDockerレポジトリの設定
- Navigation menu > Artifact Registryを選択します。
- "レポジトリを作成"をクリックし、タイプに"Docker"を選択します。
- レポジトリの名前と地域を指定します(例:doccano、asia-northeast1)。
ステップ 4: ローカル環境でのDoccanoの設定
git clone https://github.com/doccano/doccano.git
cd doccano
# Dockerfileとtool/run.shの調整を行い、適切な設定を加える
ステップ 5: Dockerfileの調整
Cloud Runでは環境変数PORT
で動的にポートを指定します。tool/run.sh
に以下を追加して、環境変数からポート番号を取得します。
gunicorn \
--bind="0.0.0.0:$PORT" \
--workers="${WORKERS:-1}" \
--timeout=300 \
--capture-output \
--log-level info \
config.wsgi &
またDockerfileで以下設定が記載されていることを確認して下さい。
RUN chmod +x /doccano/tools/run.sh
CMD ["/doccano/tools/run.sh"]
ステップ 6: Cloud Source Repositoriesへのプッシュ
git add .
git commit -m "Prepare Doccano for Google Cloud"
git push google master
ステップ 7: Cloud BuildでのビルドとArtifact Registryへのプッシュ
Cloud Build を使用して cloudbuild.yaml
ファイルをビルドする手順を説明します。これには、Google Cloud Console または Cloud SDK コマンドライン ツール gcloud
を使用します。
理解しました。Dockerfile
がプロジェクトのルートディレクトリであるdoccano
フォルダのdocker
サブディレクトリ内にある場合、cloudbuild.yaml
ファイルを適切に設定して、Cloud BuildがそのDockerfile
を認識できるようにする必要があります。
cloudbuild.yaml
ファイルの設定方法
-
cloudbuild.yaml
の設定:
Dockerfile
へのパスをcloudbuild.yaml
内で正確に指定する必要があります。次の例は、Dockerfile
がdocker
フォルダ内にある場合の設定を示しています:steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/my-image', '-f', 'docker/Dockerfile', '.'] images: - 'gcr.io/$PROJECT_ID/my-image'
この設定では、
-f
オプションを使用してDockerfile
の正確な場所を指定しています。 -
Cloud SDK(gcloud コマンドライン ツール)がインストール されていることを確認します。インストールされていない場合は、Google Cloud の公式ドキュメントからダウンロードしてインストールしてください。
-
プロジェクトの設定 を確認します:
gcloud config set project [YOUR_PROJECT_ID]
[YOUR_PROJECT_ID]
には、使用する Google Cloud プロジェクトの ID を指定します。 -
ビルドの実行:
gcloud builds submit --config cloudbuild.yaml .
このコマンドは、カレントディレクトリの
cloudbuild.yaml
を使用してビルドプロセスを開始します。.
はカレントディレクトリを指し、ここにソースコードが含まれていることを意味します。
これらのステップにより、Cloud Build を使って cloudbuild.yaml
をビルドし、設定されたタスク(例えば、コンテナのビルド、テストの実行、デプロイメント等)を自動的に実行できるようになります。
ステップ 8: Google Cloud Runへのデプロイ
環境変数として認証情報を渡しながらDoccanoをデプロイします。
gcloud run deploy doccano-service \
--image asia-northeast1-docker.pkg.dev/[PROJECT-ID]/doccano/doccano \
--add-cloudsql-instances [YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME] \
--update-env-vars DATABASE_URL=postgres://[USER]:[PASSWORD]@[HOST]:[PORT]/[DATABASE],SECRET_KEY=[YOUR_SECRET_KEY],GOOGLE_TRACKING_ID=[YOUR_TRACKING_ID] \
--platform managed \
--region asia-northeast1 \
--allow-unauthenticated
このステップにより、DoccanoがCloud Runにデプロイされ、アプリケーションにアクセスするためのURLが提供されます。