Cloud Spanner 模拟器 - docker 初始化

Sou*_*zal 0 google-cloud-spanner google-cloud-spanner-emulator

我正在尝试设置一个启动云扳手并初始化它的 Docker 容器。

使用谷歌提供的官方 docker 镜像:gcr.io/cloud-spanner-emulator/emulator

我希望在启动时自动初始化扳手。

我用 docker 文件尝试了各种方法,总结一下:

FROM gcr.io/cloud-spanner-emulator/emulator

RUN some gcloud command after to initialize local spanner db
Run Code Online (Sandbox Code Playgroud)

但是,由于缺乏有关该映像如何工作的信息,因此很难确定是否可以在每次容器启动时对其进行初始化。

我重复一遍,我需要在容器安装时自动运行它。它将建设管道。

有没有办法用这个提供的 docker 镜像来做到这一点?或者我应该创建自己的 dockerfile 通过 gcloud cli 安装模拟器?

Sou*_*zal 5

这是一个 docker 文件示例,允许启动 docker 模拟器并使用一些自定义 gcloud 命令进行初始化

FROM google/cloud-sdk:slim

RUN apt-get install -y google-cloud-sdk google-cloud-sdk-spanner-emulator

COPY ./start_spanner.bash start_spanner.bash
COPY ./schema.ddl schema.ddl

CMD ./start_spanner.bash
Run Code Online (Sandbox Code Playgroud)

这是文件的示例内容start_spanner.bash

#!/bin/bash

set -m

gcloud beta emulators spanner start --host-port=0.0.0.0:9010 &

# configure gcloud cli to connect to emulator
gcloud config set auth/disable_credentials true
gcloud config set project someproject
gcloud config set api_endpoint_overrides/spanner http://localhost:9020/

# create spanner instance
gcloud spanner instances create someinstance \
  --config=emulator-config \
  --description="Test Instance" \
  --nodes=1

# create spanner database with the given schema
gcloud spanner databases create somedb \
 --instance=someinstance \
 --ddl-file=schema.ddl

fg %1
Run Code Online (Sandbox Code Playgroud)

该文件schema.ddl只是您的 Spanner ddl,用于根据 Spanner 的文档运行以在模拟器中创建表。