Google Datastore не может подключиться внутри Docker - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть файл Docker Compose, который запускает эмулятор хранилища данных Google:

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

Почему он зависает?Он пытается подключиться к живому проекту?Я хочу запустить полностью разрозненный контейнер Docker без подключения к действующему облачному проекту Google.

Полный источник проекта находится здесь:

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

1 Ответ

0 голосов
/ 16 февраля 2019

Если я не ошибаюсь, когда вы указываете переменные окружения для своего бэкэнда, вы должны сказать, что адрес эмулятора database:8000 вместо backend:8000:

environment:
      DATASTORE_EMULATOR_HOST: database:8000

Кроме этого, конфигурациякажется слишком хорошоДайте мне знать, если это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...