起動スクリプトを作成する
このページでは、ウェブサービスの起動スクリプトを作成してスクリプトを検証する方法について説明します。
ウェブサービスの起動に手動操作が不要になるようにするには、起動スクリプトを作成する必要があります。起動スクリプトは次のタスクを実行します。
- 仮想マシン(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
起動スクリプトを検証する
- VM インスタンスで、ポートのメタデータと、VM の作成時に必要な他のすべてのパラメータを追加します。
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata=CONNECTOR_ENV_PORT=8081
- UI から VM を編集し、自動化セクションで説明した起動スクリプトを追加します。
次の gcloud コマンドも使用できます。
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata-from-file startup-script=gcp-start.sh
- 起動スクリプトを追加したら、VM に SSH で接続し、次のコマンドを実行します。
sudo google_metadata_script_runner startup
- 次のコマンドを実行して、Docker コンテナが指定されたポートで実行されていることを確認します。
sudo docker ps
- 次のコマンドを実行して、Docker サービスを停止して削除します。テスト後に、サービスが VM で実行されていないようにする必要があります。
sudo docker rm -f connector-service
- VM デプロイ スクリプトを作成する方法を学習する。