Я запускаю две отдельные службы докеров. Один для моего сервера GraphQL, а другой - это служба prisma, подключающаяся к локальной базе данных Postgres. Я могу запустить prisma deploy и протестировать его прямо в http://localhost:4466. Но когда я пытаюсь выполнить запрос, используя сервер GraphQL моего приложения в http://localhost:8080, он дает следующий ответ.
{
"data": null,
"errors": [
{
"message": "request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"feed"
]
}
]
}
Это трассировка стека.
graphql-server_1 | [Network error]: FetchError: request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466
graphql-server_1 | Error: request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466
graphql-server_1 | at new CombinedError (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/errors.js:83:28)
graphql-server_1 | at Object.checkResultAndHandleErrors (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/errors.js:101:15)
graphql-server_1 | at CheckResultAndHandleErrors.transformResult (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/transforms/CheckResultAndHandleErrors.js:10:25)
graphql-server_1 | at /usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/transforms/transforms.js:19:54
graphql-server_1 | at Array.reduce (<anonymous>)
graphql-server_1 | at applyResultTransforms (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/transforms/transforms.js:18:23)
graphql-server_1 | at /usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:82:50
graphql-server_1 | at step (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:32:23)
graphql-server_1 | at Object.next (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:13:53)
graphql-server_1 | at fulfilled (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:4:58)
Так я создал привязку
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context: req => ({
...req,
db: new Prisma({
typeDefs: './src/generated/prisma.graphql',
endpoint: 'http://localhost:4466',
secret: 'my-secret',
debug: true,
})
})
});
Я не уверен, в чем проблема.
Полный код можно найти здесь: https://github.com/dhanushuUzumaki/Journal/tree/feature/setup
Я так не думаю .. Сервер GraphQL моего приложения работает на 8080, а prisma - на 4466. Конечная точка должна указывать на службу prisma, верно? Когда я запрашиваю 4466 напрямую, он работает ... если я делаю это через 8080, я сталкиваюсь с этой ошибкой.
Хорошие правки, @ tk3 :-).





Получил помощь на форуме Prisma, чтобы решить эту проблему.
Использование localhost в контейнере указывает на сам контейнер, а не на хост, на котором работают контейнеры. Итак, чтобы подключиться к экземпляру Prisma, вы должны использовать внутреннее имя службы, которое разрешается в соответствующий контейнер Prisma.
...
db: new Prisma({
typeDefs: './src/generated/prisma.graphql',
endpoint: 'http://prisma:4466',
secret: 'my-secret',
debug: true,
})
...
Prisma Forum - ECONNREFUSED - Невозможно подключиться к службе Prisma через привязку
Это случилось со мной, когда я использовал Docker Toolbox в Windows, конечную точку пришлось изменить с использования localhost на IP-адрес VirtualBox по умолчанию в prisma.yml:
endpoint: http://192.168.99.100:4466
ERR_INVALID_URL: недопустимый URL: 192.168.99.100:4466
БЛАГОДАРЮ ВАС! Это сработало для меня. Установка сервера Prisma для создания приложения React + Prisma / GrapQL, следуя этому руководству: prisma.io/tutorials/build-react-graphql-app-with-fetch-ct19 в Windows 8.1 с Docker. Как узнать IP VirtualBox? Мои сетевые адреса VirtualBox - 192.168.56.1 и 192.168.99.1, но 192.168.99.100 был адресом, который работал для развертывания prisma.
Разве конечная точка сервера GraphQL не должна быть 8080?