起動スクリプトを作成する

このページでは、ウェブサービスの起動スクリプトを作成してスクリプトを検証する方法について説明します。

ウェブサービスの起動に手動操作が不要になるようにするには、起動スクリプトを作成する必要があります。起動スクリプトは次のタスクを実行します。

  • 仮想マシン(VM)メタデータを読み取り、CONNECTOR_ENV 接頭辞を持つメタデータの環境変数を設定します。コンシューマに必要なデータは、VM の作成時に Marketplace から取得され、Docker で環境変数として設定されます。これらの環境変数は、アプリケーションで読み取って適切に処理できます。
  • 適切な環境変数を使用して、ウェブサービスを含む Docker コンテナを起動します。

次のコードは起動スクリプトの例です。

#!/bin/bash

# 1. Fetch Metadata Keys
metadata_keys_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/"
metadata_keys=$(curl -H "Metadata-Flavor: Google" "$metadata_keys_url")

# 2. Set Environment Variables for CONNECTOR_ENV Keys (with error handling)
for key in $metadata_keys; do
  if [[ $key == CONNECTOR_ENV_* ]]; then
    metadata_value_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/$key"

    # Fetch value with error handling
    value=$(curl -H "Metadata-Flavor: Google" "$metadata_value_url" 2>/dev/null)
    if [[ -z "$value" ]]; then
      echo "Warning: No value found for key '$key'. Skipping." >&2 # Log the warning to stderr
      continue  # Skip to the next iteration
    fi
    export "$key=$value"
  fi
done

# 3. Run Docker with Environment Variables
sudo docker stop connector-service || true
sudo docker run \
  --name connector-service \
 $(env | grep CONNECTOR_ENV_ | sed 's/=/="/;s/$/"/' | sed 's/^/-e /') \
 -d -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT \
 --restart=unless-stopped \
  connector-container

起動スクリプトを検証する

  1. VM インスタンスで、ポートのメタデータと、VM の作成時に必要な他のすべてのパラメータを追加します。
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. UI から VM を編集し、自動化セクションで説明した起動スクリプトを追加します。

    次の gcloud コマンドも使用できます。

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. 起動スクリプトを追加したら、VM に SSH で接続し、次のコマンドを実行します。
    sudo google_metadata_script_runner startup
  4. 次のコマンドを実行して、Docker コンテナが指定されたポートで実行されていることを確認します。
    sudo docker ps
  5. 次のコマンドを実行して、Docker サービスを停止して削除します。テスト後に、サービスが VM で実行されていないようにする必要があります。
    sudo docker rm -f connector-service
  6. 次のステップ