【发布时间】: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
所以我知道数据存储实例运行正常。但是当我到达端点时它挂起:
为什么挂了?它是否试图连接到实时项目?我想在不连接到实时 Google Cloud 项目的情况下运行一个完全孤立的 Docker 容器。
完整的项目源代码在这里:
https://github.com/kmturley/appengine-datastore-nest-angular
【问题讨论】:
-
我无法使用github.com/kmturley/appengine-datastore-nest-angular 复制该问题
docker-compose up命令按预期工作。与:localhost:8000、localhost:8080、localhost:4200 的连接都按预期工作。 -
在访问 API 端点 localhost:8080/items 时很抱歉,它实际上是在查询数据存储区
标签: node.js docker google-cloud-platform docker-compose google-cloud-datastore