Google Datastore无法连接Docker
我有一个运行Google Datastore模拟器的Docker Compose文件:
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后端:
.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
在两个示例中,我都可以通过访问以下内容来查看“确定”消息
http://localhost:8000
所以我知道数据存储区实例正在运行。但是当我得到端点时它会挂起:
http://localhost:8080/items
为什么挂?它是否正在尝试连接到实时项目?我想运行一个完全孤立的Docker容器,而无需连接到实时的Google Cloud Project。
完整的项目来源在这里:
回答如下:如果我没弄错的话,当你为你的后端指定环境变量时,你应该说模拟器地址是database:8000
而不是backend:8000
:
environment:
DATASTORE_EMULATOR_HOST: database:8000
除此之外配置似乎太好了。如果有帮助,请告诉我