【问题标题】:Running google datastore emulator with docker使用 docker 运行谷歌数据存储模拟器
【发布时间】:2017-10-24 21:23:00
【问题描述】:

我正在尝试使用 docker 创建一个数据存储模拟器, 并按照此处的说明进行操作 https://cloud.google.com/datastore/docs/tools/datastore-emulator

我也使用了 cloud-sdk https://hub.docker.com/r/google/cloud-sdk/

我能够创建模拟器并对其进行身份验证,但是当我尝试通过 localhost:8000/datastore 访问它时 它给了我“未找到”的响应,

如何访问数据存储区数据?

我用来创建它的命令是:

docker run -p 8000:8000 google/cloud-sdk gcloud beta emulators datastore start --project=pname --host-port localhost:8000 --no-store-on-disk

【问题讨论】:

  • 我必须通过 --host-port 0.0.0.0:8000 才能到达终点。我使用的完整命令是:docker run --rm -p 8000:8000 google/cloud-sdk:emulators gcloud --project=[project] beta emulators datastore start --host-port 0.0.0.0:8000 --no-store-on-disk

标签: google-app-engine docker google-cloud-datastore containers


【解决方案1】:

Datastore 模拟器仅支持 HTTP/2。这意味着您应该使用支持客户端(即 google-cloud-python、google-cloud-java 等)访问模拟器中的数据。这个官方库支持使用环境变量 DATASTORE_EMULATOR_HOSTDATASTORE_PROJECT_ID 设置模拟器主机。

示例设置变量

export DATASTORE_EMULATOR_HOST=localhost:8000
export DATASTORE_PROJECT_ID=project-id-in-google

这应该允许客户端访问模拟器,完成后取消设置上面的变量以访问实时数据存储使用:

unset DATASTORE_EMULATOR_HOST
unset DATASTORE_PROJECT_ID

注意事项:

  • DATASTORE_EMULATOR_HOST 可以从正在运行的 docker 容器中检索到,如下所示

    [datastore] API endpoint: http://localhost:8000
    [datastore] If you are using a library that supports the DATASTORE_EMULATOR_HOST environment variable, run:
    [datastore] 
    [datastore]   export DATASTORE_EMULATOR_HOST=localhost:8000
    [datastore]
    [datastore] Dev App Server is now running.
    
    • DATASTORE_PROJECT_ID应该在线匹配项目

tid 位

  • 检查模拟器状态GET请求http://localhost:8000,如果模拟器正在运行,它应该返回ok

  • 通过POSThttp://localhost:8000/reset请求重置模拟器以删除所有数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多