Cloud Code for Cloud Shell で Cloud Run サービスをローカルで開発する

Cloud Run にサービスをデプロイする前に、Cloud Run エミュレータを使用してサービスをローカルで開発できます。

開発用のサービスの構成

.vscode/launch.jsonファイルが定義されていない場合、Cloud Run エミュレータの実行 / デバッグダイアログで起動と起動の設定を指定して .vscode/launch.json の設定を保存できます。.vscode/launch.json ファイルが構成されている場合は、ファイルを直接編集できます。

サービスをローカルで実行するには、構成を指定します。

  1. コマンド パレットを開き(Ctrl/Cmd+Shift+P を押下するか、[表示] > [コマンド パレット] をクリック)、[Run on Cloud Run Emulator] コマンドを実行します。
  2. Cloud Run エミュレータの実行 / デバッグ ダイアログで、構成の仕様を設定します。

    • Cloud Run エミュレータでは、ローカルにインストールされたビルドツールのみ利用できます
    • ビルダーとして [Docker] または [Buildpacks] を選択し、ソースを指定します。
    • (省略可)実行中のコンテナに渡す環境変数を指定するには、[ビルドの詳細設定] を展開し、クリックして Key-Value ペアを指定します。
      名前 説明
      PORT HTTP サーバーがリッスンするポート。 8080
      K_SERVICE 実行されている Cloud Run サービスの名前。 hello-world
      K_REVISION 実行されている Cloud Run リビジョンの名前。 hello-world.1
      K_CONFIGURATION リビジョンを作成した Cloud Run 構成の名前。 hello-world
    • (省略可)Cloud SQL 接続を指定するには、[高度なサービス設定] を展開し、[接続] をクリックして、1 行につき 1 つの Cloud SQL 接続を指定します。
    • (省略可)[ローカル ネットワーク上の他のデバイスからサービスにアクセスする] オプションにチェックを入れます。
    • (省略可)変更する際に、自動ではなく、手動で再ビルドして実行する場合は、[変更を自動的に再構築して再実行する] というチェックボックスをオフにします。

ローカルでのサービスの実行する

  1. 必要な設定を入力後、[実行] をクリックしてサービスを実行します。

  2. 出力ウィンドウでデプロイのステータスをモニタリングします。

    デプロイ完了後は、出力ウィンドウに表示された URL を開いて、実行中のサービスを表示できます。

  3. 詳細ログを表示するには、出力ウィンドウ内で Cloud Run の詳細ビューに切り替えます。

    hello-world-5 を含む出力ペイン - 出力チャネル プルダウンから詳細が選択されている

  4. セッションが完了したら、右クリックして次のコマンドを使用します。

    • ログの表示: Cloud Code ログ エクスプローラで特定のデプロイのアプリケーション ログを開きます。
    • URL を開く: 特定サービスのアプリケーション サービス URL をウェブブラウザで開きます。
  5. 起動構成でウォッチモードをオフにしていて、アプリケーションを変更し、アプリケーションの再ビルドと再デプロイを行う場合は、Cloud Code のステータスバーをクリックして、ウォッチモードをオンにするをクリックします。

  6. デプロイメントを停止するには、現在のデプロイメントのアクションバーの [Stop] ボタンをクリックします。

    Cloud Run のデプロイメントのアクションバー

シークレットの保管

API キー、パスワード、証明書などの潜在的なセンシティブ データがコードに含まれている場合は、それらを Secret として保存することでセキュリティを確保できます。Cloud Code Secret Manager を統合することで、これらの Secret を安全に保存し、プログラムで取得できます。Cloud Code で Secret を作成および管理する方法の詳細については、Secret Manager ガイドをご覧ください。

既存の launch.json 構成のカスタマイズ

実行アクションを選択すると、Cloud Code プラグインが launch.json 構成ファイルを自動的に更新します。サービスの実行方法をさらにカスタマイズするには、.vscode/launch.json ファイルで次のフィールドを指定します。

  • watch: ワークスペースの変更を監視し、サービスを再実行します。デフォルトでは True です。

    次のサンプルは、true に設定された watch を示しています。

    "watch": true,
    
  • build: イメージのビルドに使用するビルダー(Docker、jibMaven、jibGradle、buildpacks)を指定します。

    次のサンプルは、Docker ビルダーを示しています。

    "build": {
      "docker": {
        "path": "Dockerfile"
      }
    },
    

    次のサンプルは、buildpack ビルダーを示しています。

    "build": {
      "buildpacks": {
        "path": "src/requirements.txt",
        "builder": "gcr.io/buildpacks/builder:v1"
      }
    },
    
  • イメージ: 使用するイメージの名前を指定します。

    次のサンプルは、イメージ名を指定する方法を示しています。

      "image": "hello-world",
    
  • サービス: 使用する Cloud Run サービスを指定します。

    次のサンプルは、サービス名、ポート、リソースの上限を指定する方法を示しています。

    "service": {
      "name": "hello-world",
      "containerPort": 8080,
      "resources": {
        "limits": {
          "memory": "256Mi"
        }
      }
    },
    
  • debug: リモートパスのマッピングなどのデバッグ設定を指定して、ローカルパスをリモート コンテナ上のパスにマッピングします。

    次のサンプルは、ソースファイルの場所を示すデバッグ セクションを示しています。

    "debug": {
      "sourceFileMap": {
        "${workspaceFolder}": "/app"
      }
    }