代码之家  ›  专栏  ›  技术社区  ›  M1M6

使用docker运行google datastore emulator

  •  3
  • M1M6  · 技术社区  · 7 年前

    我正试图用docker创建一个数据存储模拟器, 按照这里的说明 https://cloud.google.com/datastore/docs/tools/datastore-emulator

    我还使用了云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
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   brotich    7 年前

    数据存储模拟器仅支持 HTTP/2 . 这意味着您应该使用支持客户端(即google cloud python、google cloud java e.t.c)访问模拟器中的数据。该官方库支持使用环境变量设置模拟器主机 DATASTORE_EMULATOR_HOST DATASTORE_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\u EMULATOR\u主机 可以从正在运行的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.
      
      • 数据存储项目ID 应该匹配在线项目

    tid位

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

    • 重置emulator以删除所有数据 POST 请求到 http://localhost:8000/reset