前提条件
- Dockerイメージが作成されていること
- gcloud CLI がインストールされていること
参考サイト
■Dockerイメージの作成方法

①Artifact Registryリポジトリの作成
Dockerイメージを格納するためのリポジトリを作成します。
Artifact Registryのコンソール画面に遷移し、画面上部の「+ リポジトリの作成」を選択します。

以下の設定を行い、作成を選択してリポジトリをデプロイします。
| 設定項目 | 値 | 補足 |
|---|---|---|
| 名前 | リポジトリの名前 | - |
| 形式 | Docker | - |
| ロケーションタイプ | リージョン | 可用性を担保するために冗長化したい場合は「マルチリージョン」を選択してください。 |
| 上記以外の設定項目 | デフォルトのまま | 詳細設定を行いたい場合、公式サイトを参考に設定してください。 |

ターミナル(コマンドプロンプト、PowerShell 等)で以下コマンドを実行し、Artifact Registry に対して認証を行います。
gcloud auth configure-docker asia-northeast1-docker.pkg.dev②Artifact Registryリポジトリにイメージをプッシュ
アプリが配置されているディレクトリに移動し、Dockerイメージをビルドします。
docker build -t asia-northeast1-docker.pkg.dev/<PROJECT_ID>/<REPOSITRY_NAME>/<IMAGE_NAME>:<TAG> .<PROJECT_ID>: Google Cloud プロジェクトの ID<REPOGITRY_NAME>: Artifact Registry のリポジトリ名<IMAGE_NAME>:<TAG>: プッシュする Docker イメージの名前とバージョン
■エラーが発生する場合
Docker Engineが起動されていない場合、以下のエラーメッセージが発生します。
ERROR: error during connect: Head "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/_ping": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.その場合は以下の手順で、Docker Desktopを起動してください。
スタートメニュー→Docker Desktopを検索し、クリックして起動- 起動後にタスクバーのDockerアイコン(クジラマーク)が表示されるか確認
- 数分待ち、再度
docker infoを実行して動作を確認
作成したDockerイメージに対して、Artifact Registry用のタグ付けを行います。
docker tag <IMAGE_NAME>:<TAG> asia-northeast1-docker.pkg.dev/<PROJECT_ID>/<REPOSITRY_NAME>/<IMAGE_NAME>:<TAG><PROJECT_ID>: Google Cloud プロジェクトの ID<REPOGITRY_NAME>: Artifact Registry のリポジトリ名<IMAGE_NAME>:<TAG>: プッシュする Docker イメージの名前とバージョン
docker push asia-northeast1-docker.pkg.dev/<PROJECT_ID>/<REPOSITRY_NAME>/<IMAGE_NAME>:<TAG><PROJECT_ID>: Google Cloud プロジェクトの ID<REPOGITRY_NAME>: Artifact Registry のリポジトリ名<IMAGE_NAME>:<TAG>: プッシュする Docker イメージの名前とバージョン
③コンテナのデプロイ
コンソール画面から[Cloud Run]ページに遷移し、コンテナをデプロイ>サービスの順に選択します。

以下の設定を行い、作成を選択してコンテナをデプロイします。
| 設定項目 | 値 | 補足 |
|---|---|---|
| サービスの種類 | 「既存のコンテナイメージから1つのリビジョンをデプロイする」 | - |
| コンテナイメージのURL | ②でArtifact Registryにプッシュしたコンテナイメージ | 選択を選択すると、Artifact Registry内のコンテナイメージの候補が表示されます。 |
| サービス名 | Cloud Runのサービス名 | - |
| リージョン | コンテナを実行したいリージョン | - |
| 認証 | 未認証の呼び出しを許可 | アプリケーションレイヤーのアクセス制御の有無を選択します。(※) |
| コンテナポート | アプリがリッスンしているポート番号 | - |
| Ingress | すべて | ネットワークレイヤーのアクセス制御を選択します。 |
| 上記以外の設定項目 | デフォルトのまま | 詳細設定を行いたい場合、公式サイトを参考に設定してください。 |

■アクセス制御を実現したい場合
上記の設定だと全世界のユーザーがコンテナアプリにアクセスできてしまうので、セキュリティの懸念があります。 ※特に開発段階は注意が必要です。
「インターネット公開したいけど、アクセスできるユーザーは限定したい」という場合は、「Identity-Aware Proxy(IAP)」の利用を推奨します。
<IAPのメリット>
- IAPに登録しているユーザーのみが、アプリにアクセスできるようになる。
④動作確認
Cloud Runのサービス画面に遷移し、URLを確認します。

ブラウザにURLを入力して、アクセスできることを確認します。
【補足】デプロイ済みサービスへの新規リビジョンの追加
アプリソースを変更した場合、作成したサービスに「新規リビジョン」をデプロイすることで変更内容を更新できます。
「②Artifact Registryリポジトリにイメージをプッシュ」の手順に従って、Dockerイメージのビルド・プッシュ行います。 ※タグ付けする際は、既存と異なるタグを設定してください。
作成したサービスの画面に遷移して、新しいリビジョンの編集とデプロイを選択します。

コンテナイメージのURLに新たにプッシュしたコンテナイメージを選択し、デプロイを選択します。


コメント