시작 스크립트 만들기

이 페이지에서는 웹 서비스의 시작 스크립트를 만든 후 스크립트를 검증하는 방법을 설명합니다.

웹 서비스를 가져올 때 수동 개입이 필요하지 않도록 하려면 시작 스크립트를 만들어야 합니다. 시작 스크립트는 다음 작업을 실행합니다.

  • 가상 머신 (VM) 메타데이터를 읽고 CONNECTOR_ENV 접두사로 메타데이터의 환경 변수를 설정합니다. 소비자에게 필요한 모든 데이터는 VM 생성 중에 마켓플레이스에서 가져와 도커에서 환경 변수로 설정됩니다. 그러면 이러한 환경 변수를 애플리케이션에서 읽고 적절하게 처리할 수 있습니다.
  • 적절한 환경 변수를 사용하여 웹 서비스가 포함된 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. 다음 단계