【问题标题】:Google Datastore unable to connect inside DockerGoogle Datastore 无法在 Docker 内部连接
【发布时间】:2019-07-06 18:56:09
【问题描述】:

我有一个运行 Google Datastore 模拟器的 Docker Compose 文件:

https://cloud.google.com/datastore/docs/tools/datastore-emulator

version: '3'
services:

  database:
    image: google/cloud-sdk
    command: gcloud beta emulators datastore start --host-port 0.0.0.0:8000 --project emulator --store-on-disk
    ports:
      - 8000:8000

  backend:
    build: ./backend
    command: npm run start:dev
    ports:
      - 8080:8080
    environment:
      DATASTORE_EMULATOR_HOST: backend:8000
      DATASTORE_PROJECT_ID: emulator
    volumes:
      - ./backend:/usr/src/app:rw
      - /usr/src/app/node_modules

我有一个 NodeJS 后端,它遵循 NodeJS 数据存储示例:

https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/appengine/datastore/app.js

const Datastore = require('@google-cloud/datastore');
const datastore = Datastore();
const query = datastore.createQuery('visit');
datastore.runQuery(query);

当我在本地运行脚本时,它可以工作:

npm start

但是,当我使用 Docker Compose 运行时,NodeJS 示例挂起,没有显示任何错误消息:

docker-compose up

在这两个示例中,我都可以通过访问看到“Ok”消息:

http://localhost:8000

所以我知道数据存储实例运行正常。但是当我到达端点时它挂起:

http://localhost:8080/items

为什么挂了?它是否试图连接到实时项目?我想在不连接到实时 Google Cloud 项目的情况下运行一个完全孤立的 Docker 容器。

完整的项目源代码在这里:

https://github.com/kmturley/appengine-datastore-nest-angular

【问题讨论】:

标签: node.js docker google-cloud-platform docker-compose google-cloud-datastore


【解决方案1】:

如果我没记错的话,当您为后端指定环境变量时,您应该说模拟器地址是database:8000 而不是backend:8000:

environment:
      DATASTORE_EMULATOR_HOST: database:8000

除此之外,配置似乎也很好。让我知道这是否有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2020-06-06
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2020-02-08
    相关资源
    最近更新 更多