30 lines
1.0 KiB
Bash
Executable File
30 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
: "${SPANNER_PROJECT:?}"
|
|
: "${SPANNER_INSTANCE:?}"
|
|
: "${SPANNER_DATABASE:?}"
|
|
|
|
# 1) Wait for emulator gRPC port (inside compose network it's "spanner:9010")
|
|
for _ in $(seq 1 60); do
|
|
(echo >/dev/tcp/spanner/9010) >/dev/null 2>&1 && break
|
|
sleep 1
|
|
done
|
|
|
|
# 2) Point gcloud to the emulator (disable real IAM)
|
|
export SPANNER_EMULATOR_HOST=spanner:9010
|
|
gcloud config set auth/disable_credentials true >/dev/null
|
|
gcloud config set core/project "${SPANNER_PROJECT}" >/dev/null
|
|
gcloud config set api_endpoint_overrides/spanner http://spanner:9020/ >/dev/null
|
|
|
|
# 3) Create instance & database (idempotent)
|
|
gcloud spanner instances create "${SPANNER_INSTANCE}" \
|
|
--config=emulator-config --nodes=1 --description="Dev" >/dev/null 2>&1 || true
|
|
|
|
gcloud spanner databases create "${SPANNER_DATABASE}" \
|
|
--instance="${SPANNER_INSTANCE}" >/dev/null 2>&1 || true
|
|
|
|
# 4) Apply DDL
|
|
gcloud spanner databases ddl update "${SPANNER_DATABASE}" \
|
|
--instance="${SPANNER_INSTANCE}" \
|
|
--ddl-file="/work/ddl/schema.sql" >/dev/null |