Я пытаюсь запустить Graphql Prisma с Nexus, следуя этой инструкции шаг за шагом.https://www.prisma.io/docs/get-started/03-build-graphql-servers-with-prisma-TYPESCRIPT-t201/
когда я запускаю на своем компьютере nodemon dev
он работает нормально
визит http://localhost:4466/_admin
работает нормально.
простой запрос в http://localhost:4000/
(согласно официальномудокумент) работает нормально.
mutation {
createUser(data: { name: "Jane" }) {
id
}
}
//return
// all working
{
"data": {
"createUser": {
"id": "5cd22c1b73c7b2000782c07b"
}
}
}
Теперь мне нужно запустить index.ts
в контейнере Docker, поэтому я создал контейнер
Dockerfile
FROM node:10 as installer
WORKDIR /src
COPY package.json package-lock.json ./
RUN npm install
FROM node:10-alpine
RUN mkdir /src
WORKDIR /src
COPY --from=installer /src .
COPY . .
RUN npm install -g nodemon
RUN npm install -g typescript
EXPOSE 4000
CMD ["nodemon", "dev"]
docker-файл compose.yml
version: '3'
services:
app:
build: .
container_name: "demoprisma_app"
volumes:
- "./:/src/"
ports:
- "4500:4000"
prisma:
image: prismagraphql/prisma:1.32
restart: always
ports:
- '4466:4466'
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mongo
uri: mongodb://prisma:prisma@mongo
mongo:
image: mongo:3.6
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: prisma
MONGO_INITDB_ROOT_PASSWORD: prisma
ports:
- '27017:27017'
volumes:
- mongo:/var/lib/mongo
volumes:
mongo: ~
Когда я захожу в контейнер app
в браузере http:localhost:4500
и делаю тот же запрос
mutation {
createUser(data: { name: "Jane" }) {
id
}
}
Я получаю эту ошибку
{
"data": null,
"errors": [
{
"message": "request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"createUser"
]
}
]
}
Я думаю, что эта ошибка связана с тем, что сеть контейнера Docker, но я не уверен, как сделать index.ts
внутри контейнера
. Вы можете клонировать пример проекта с ошибкой из моего github
https://github.com/rollrodrig/prismademotest
просто run
docker-compose up
чтобы увидеть ошибку