创建启动脚本
本页介绍了如何为 Web 服务创建启动脚本,然后验证该脚本。
为确保启动 Web 服务无需手动干预,您必须创建一个启动脚本。启动脚本会执行以下任务:
- 读取虚拟机 (VM) 元数据,并为带有
CONNECTOR_ENV
前缀的元数据设置环境变量。在创建虚拟机期间,系统会从 Marketplace 获取使用方所需的所有数据,并将其设置为 docker 中的环境变量。然后,应用便可相应地读取和处理这些环境变量。 - 使用适当的环境变量启动包含 Web 服务的 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
验证启动脚本
- 在虚拟机实例中,添加相应端口的元数据以及虚拟机创建期间所需的所有其他参数。
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata=CONNECTOR_ENV_PORT=8081
- 通过界面修改虚拟机,然后添加“自动化”部分中提及的启动脚本。
您还可以使用以下 gcloud 命令:
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata-from-file startup-script=gcp-start.sh
- 添加启动脚本后,通过 SSH 连接到虚拟机并运行以下命令:
sudo google_metadata_script_runner startup
- 运行以下命令,确保 docker 容器在所述端口上运行。
sudo docker ps
- 运行以下命令以停止并移除 docker 服务。测试完成后,服务不得在虚拟机上运行。
sudo docker rm -f connector-service