開発段階で、デプロイする前にコンテナ イメージをローカルで実行し、テストを行うことができます。Cloud Code またはローカルにインストールされた Docker を使用して、ローカルでの実行とテストを行うことができます。Google Cloud サービスにアクセスして、ローカルでテストを行うこともできます。
始める前に
ローカルで初めて実行する場合は、使用しているサポート対象のコンテナ レジストリからイメージにアクセスするために必要な権限の一部がない可能性があります。
アクセス権を取得する方法については、サポート対象のコンテナ レジストリのドキュメントをご覧ください。gcloud CLI 認証情報ヘルパーを使用して Artifact Registry にアクセスするように Docker を構成できます。
gcloud auth configure-docker LOCATION-docker.pkg.dev
ローカルでテストする
Docker、Google Cloud にアクセスする Docker、Cloud Code エミュレータ、Google Cloud CLI を使用して、ローカルでテストできます。適切なタブを選択して、手順をご覧ください。
Docker
Docker を使用してコンテナ イメージをローカルでテストするには:
次の Docker コマンドを使用します。
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。PORT
環境変数には、アプリケーションが HTTP または HTTPS リクエストをリッスンするポートを指定します。これは、コンテナ ランタイムの契約要件です。この例では、ポート 8080 を使用します。ブラウザで http://localhost:9090 を開きます。
コンテナに慣れていない場合は、Docker のスタートガイドをご覧ください。Docker コマンドの詳細については、Docker のドキュメントをご覧ください。
Google Cloud にアクセスする Docker
Google Cloud クライアント ライブラリを使用してアプリケーションを Google Cloud サービスと統合していて、これらのサービスを外部アクセスから保護していない場合、ローカル コンテナを設定してアプリケーションのデフォルト認証情報を使用し、Google Cloud サービスで認証を行います。
ローカルで実行するには:
サービス アカウントの認証情報を生成、取得、構成する方法については、認証の開始をご覧ください。
以下の Docker 実行フラグを使用して、ローカル システムからローカル コンテナに認証情報と構成を読み込みます。
--volume
(-v
)フラグを使用して、認証情報のファイルをコンテナに挿入します。この操作を行う前に、マシンにGOOGLE_APPLICATION_CREDENTIALS
環境変数が設定されている必要があります。-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
--environment
(-e
)フラグを使用して、コンテナ内にGOOGLE_APPLICATION_CREDENTIALS
変数を設定します。-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
(省略可能)この完全構成済みの Docker
run
コマンドを使用します。PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \ IMAGE_URL
上記の例のパスは、
上記の例の は、認証情報を配置するコンテナ内の場所です。/tmp/keys/FILE_NAME.json
他のディレクトリも使用できますが、
GOOGLE_APPLICATION_CREDENTIALS
環境変数の値がコンテナ内のバインド マウントの場所と一致している必要があります。一部の Google Cloud サービスでは、ローカルのトラブルシューティングが本番環境のパフォーマンスやデータに影響を及ぼさないように、別の構成を使用することをおすすめします。
Cloud Code エミュレータ
VS Code と JetBrains IDE 用の Cloud Code プラグインを使用すると、IDE 内の Cloud Run エミュレータにより、コンテナ イメージをローカルで実行し、デバッグできるようになります。エミュレータでは、Cloud Run 上で実行するサービスの環境を構成できます。
CPU やメモリ割り当てなどのプロパティの構成、環境変数の指定、Cloud SQL データベース接続の設定が実行できます。
gcloud CLI
Google Cloud CLI には、Cloud Run をエミュレートするローカル開発環境が含まれています。この環境を利用すると、ソースからコンテナをビルドし、ローカルマシンでコンテナを実行できます。また、コードの変更時にソースにコンテナを自動的に再構築できます。
ローカル開発環境を開始するには:
サービスのソースコードを含むディレクトリに移動します。
次のコマンドを起動します。
Dockerfile がローカル ディレクトリに存在する場合、Dockerfile を使用してコンテナを構築します。Dockerfile が存在しない場合、コンテナは Google Cloud の buildpacks で構築されます。gcloud beta code dev
サービスが実行されていることを確認するには、ブラウザで http://localhost:8080/ にアクセスします。--local-port
オプションでカスタムポートを指定した場合は、そのポートでブラウザを開くようにしてください。
ローカル サーバーを停止するには:
- Mac OS と Linux: Ctrl-C
- Windows: Ctrl-Break
サービス構成をカスタマイズする
YAML ファイルを使用して、ローカルで実行されるサービスの Cloud Run 構成をカスタマイズできます。YAML 形式は、Cloud Run サービスのデプロイに使用できるものと同じですが、Cloud Run サービスの設定のサブセットのみをサポートしています。gcloud beta
code dev
は、現在のディレクトリで *.service.dev.yaml
で終わるすべてのファイルを検索し、使用します。見つからない場合は、末尾が *.service.yaml
のファイルが使用されます。
ローカル開発では、次の設定を構成できます。
コンテナの image
フィールドはローカル開発には必要ありません。これは、コマンドの実行時にイメージがビルドされ、サービスに渡されるためです。
ローカル開発には、次のサンプル service.dev.yaml
ファイルを使用できます。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
認証情報を使用したテスト
コンテナに Google Cloud サービスを使用する権限を付与するには、コンテナにアクセス認証情報を付与する必要があります。
独自のアカウントを使用してコンテナに認証情報へのアクセスを許可するには、gcloud を使用してログインし
--application-default-credential
フラグを使用します。gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
アプリケーション認証情報をサービス アカウントとして付与するには、
--service-account
フラグを使用します。gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
--service-account
フラグを指定すると、サービス アカウント キーがダウンロードされ、ローカルのキャッシュに保存されます。キーを安全に保管し、不要になったら削除してください。
コードがローカルで実行されていることを確認する
Cloud Run でのテストをローカルで行う場合、Cloud Run のすべてのコンテナで利用できる K_REVISION
環境変数をチェックすることで、コンテナがローカルで実行されていることを確認できます。
Docker
Google Cloud CLI で、コードがローカルで実行されていることを確認するには、K_REVISION
環境変数をクエリします。これはまだ設定されていないため、値はありません。
Google Cloud にアクセスする Docker
ステップ 3 の上記のセクションの正確な値を使用して、Google Cloud CLI でコードがローカルで実行されていることを確認するには、K_REVISION
環境変数をクエリして値 dev-00001
を探し、コードがローカルで実行されていることを確認します。
Cloud Code エミュレータ
Cloud Code で、コードがローカルで実行されていることを確認するには、K_REVISION
環境変数をクエリし、local
の値を探してローカルで実行されていることを確認します。
gcloud CLI
Google Cloud CLI で、コードがローカルで実行されていることを確認するには、K_REVISION
環境変数をクエリし、dev-
で始まる値を探して、ローカルで実行されていることを確認します。
次のステップ
- 破損した Cloud Run アプリケーションのローカル トラブルシューティングの方法については、Cloud Run サービスのローカル トラブルシューティングのチュートリアルをご覧ください。
- ビルドしたコンテナのデプロイ方法については、サービスのデプロイの手順に沿って操作します。