Я развертываю простой 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 на нужном порту и не работать в Тайм-аут подключения?