我有一个运行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一起运行时,NodeJS示例将挂起,而没有显示任何错误消息:
docker-compose up
在两个示例中,我都可以通过访问以下内容来查看“确定”消息:
http://localhost:8000
所以我知道数据存储实例正在正确运行。但是,当我在以下位置找到端点时,它会挂起:
为什么挂了?是否正在尝试连接到正在进行的项目?我想运行一个完全孤立的Docker容器而不连接到实时Google Cloud Project。
完整的项目源在这里:
https://github.com/kmturley/appengine-datastore-nest-angular
答案 0 :(得分:1)
如果我没记错的话,当您为后端指定环境变量时,您应该说仿真器地址是1/12 = 0.0833333333333333333333333333.....3
(1/12) x 12000 = 999.9999999999999999...999999996
而不是1m/12m = 0.0833333333333333333333333333
(1m/12m) * 12000 = 999.9999999999999999999999996
:
1d/12d = 0.083333333333333329 // looses precision
(1d/12d) * 12000 = 1000 // rounded
除此之外,配置似乎还不错。让我知道是否有帮助