docker mon goose работает на тайм-аут соединения, но работает при установке net в качестве значения хоста - PullRequest
0 голосов
/ 25 марта 2020

Я развертываю простой API GraphQL на сервере. У меня есть ограничения порта на сервере. Мое приложение работает на 3000, но я sh сопоставляю его с 8117.

. У меня есть db.json файл в базе кода, который сопоставляет учетные данные и URL-адрес MongoDB с моим app.js:

{
  "env": {
    "MONGO_USER" : "user1",
    "MONGO_PASSWORD" : "secretpassword",
    "MONGO_DATABASE" : "IP_address_of_server",
    "MONGO_PORT": "37017"
  }
}

После создания образа:

docker run --name=graphql1 -p 8117:3000 my_graphql_image:1.0

Я могу открыть порт на сервере, однако при:

docker logs -f grapqhl1

Я получаю следующую ошибку :

{ MongooseServerSelectionError: connection timed out
    at new MongooseServerSelectionError (/usr/src/app/node_modules/mongoose/lib/error/serverSelection.js:22:11)
    at NativeConnection.Connection.openUri (/usr/src/app/node_modules/mongoose/lib/connection.js:808:32)
    at Mongoose.connect (/usr/src/app/node_modules/mongoose/lib/index.js:333:15)
    at Object.<anonymous> (/usr/src/app/app.js:56:10)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
  message: 'connection timed out',
  name: 'MongooseServerSelectionError',
  reason:
   TopologyDescription {
     type: 'Single',
     setName: null,
     maxSetVersion: null,
     maxElectionId: null,
     servers: Map { '<IP_Address>:37017' => [ServerDescription] },
     stale: false,
     compatible: true,
     compatibilityError: null,
     logicalSessionTimeoutMinutes: null,
     heartbeatFrequencyMS: 10000,
     localThresholdMS: 15,
     commonWireVersion: null },
  [Symbol(mongoErrorContextSymbol)]: {} }

Клиент Mon goose не запускает go тайм-аут, когда я запускаю контейнер с --net=host

docker run --name=grapqhl1 -d --net=host my_graphql_image:1.0

Однако, так как --net=host отбрасывает порты при используя режим сети хоста. Я не могу подключиться к приложению через порт 8117 или порт 3000. docker ps -a также не показывает никаких портов внутри или снаружи приложения.

Каков оптимальный способ доступа к API на нужном порту и не работать в Тайм-аут подключения?

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