Crea uno script di avvio
Questa pagina descrive come creare uno script di avvio per il servizio web e poi convalidarlo.
Per assicurarti che l'avvio del servizio web non richieda intervento manuale, devi creare uno script di avvio.Lo script di avvio esegue le seguenti attività:
- Legge i metadati della macchina virtuale (VM) e imposta la variabile di ambiente per i metadati con il prefisso
CONNECTOR_ENV
. Tutti i dati richiesti dai consumatori vengono acquisiti durante la creazione della VM dal marketplace e impostati come variabili di ambiente in Docker. Queste variabili di ambiente possono quindi essere lette ed elaborate di conseguenza nell'applicazione. - Avvia il contenitore Docker contenente il servizio web con le variabili di ambiente appropriate.
Il seguente codice è uno script di avvio di esempio:
#!/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
Convalida lo script di avvio
- Nell'istanza VM, aggiungi i metadati per la porta e tutti gli altri parametri richiesti durante la creazione della VM.
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata=CONNECTOR_ENV_PORT=8081
- Modifica la VM dall'interfaccia utente e aggiungi lo script di avvio indicato nella sezione sull'automazione.
Puoi anche utilizzare il seguente comando gcloud:
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata-from-file startup-script=gcp-start.sh
- Dopo aver aggiunto lo script di avvio, connettiti alla VM tramite SSH ed esegui il seguente comando:
sudo google_metadata_script_runner startup
- Esegui il seguente comando per assicurarti che il container Docker sia in esecuzione sulla porta indicata.
sudo docker ps
- Esegui questo comando per arrestare e rimuovere il servizio Docker. Al termine del test, il servizio non deve essere in esecuzione sulla VM.
sudo docker rm -f connector-service
- Scopri come creare uno script di deployment della VM.