Prisma, MongoDB, Docker "запрос на http://localhost:4466/ не выполнен, причина: подключение ECONNREFUSED 127.0.0.1:4466" - PullRequest
1 голос
/ 28 июня 2019

После запуска моей команды docker-compose up все запускается, и я запускаю prisma deploy, который также работает нормально, но мое приложение по-прежнему возвращает вышеуказанную ошибку. Я пытался найти решение этой проблемы в течение нескольких дней, и в Интернете нет ничего полезного, и несколько похожих вопросов были закрыты или проигнорированы. Буду признателен за помощь в решении этой проблемы.

Вот мой docker-compose.yml файл:

version: '3'
services:
  prisma:
    env_file:
      - .env
    image: prismagraphql/prisma:1.34
    restart: always
    ports:
    - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        port: 4466
        databases:
          default:
            connector: mongo
            uri: ${MONGODB_URI}
            host: host.docker.internal
      JWT_SECRET: ${JWT_SECRET}
  mongo:
    env_file:
      - .env
    image: mongo:3.6
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD}
    ports:
      - "27017:27017"
    volumes:
      - mongo:/var/lib/mongo
  web:
    env_file:
      - .env
    build: .
    volumes:
      - .:/usr/app/
      - /usr/app/node_modules
    ports:
      - "4000:4000"
    environment:
      DATABASE_URL: ${MONGODB_URI}

volumes:
  mongo:

Мой Dockerfile :

FROM node:8.16.0-alpine
WORKDIR /usr/app
COPY package.json .
RUN npm install --quiet
COPY . .

ENV DOCKERIZE_VERSION v0.6.0
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz

CMD dockerize -wait tcp://mongo:27017 -wait tcp://prisma:4466 -timeout 60m npm start

Мой prisma.yml :

endpoint: http://localhost:4466
datamodel: 
  - db/types.prisma
  - db/enums.prisma
databaseType: document

generate:
  - generator: javascript-client
    output: ./generated/prisma-client/

Моя команда prisma deploy работает и генерирует базу данных mongo, но когда я пытаюсь запросить мое приложение по адресу localhost: 4000 , она выглядит так и возвращает эту ошибку:

request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466

Но когда я перехожу на localhost: 4466 / _admin , база данных все в порядке и показывает три таблицы, которые должны быть там.

Я проверил, если что-то работает localhost: 4466, выполнив эту команду: lsof -i :4466, и я вижу, что докер запущен правильно.

COMMAND    PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke 5923 sguduguntla   24u  IPv4 0x89ea943c9b98ff09      0t0  TCP *:4466 (LISTEN)
com.docke 5923 sguduguntla   25u  IPv6 0x89ea943c87111549      0t0  TCP localhost:4466 (LISTEN)

Когда я запускаю docker ps, вы также можете увидеть следующий вывод с тремя изображениями:

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                      NAMES
fa70fae37f10        prismagraphql/prisma:1.34        "/bin/sh -c /app/sta…"   35 minutes ago      Up 31 minutes       0.0.0.0:4466->4466/tcp     decal-board-graphql-server_prisma_1
d64b9f6dcd29        decal-board-graphql-server_web   "docker-entrypoint.s…"   35 minutes ago      Up 31 minutes       0.0.0.0:4000->4000/tcp     decal-board-graphql-server_web_1
6f7dda5e58a0        mongo:3.6                        "docker-entrypoint.s…"   35 minutes ago      Up 31 minutes       0.0.0.0:27017->27017/tcp   decal-board-graphql-server_mongo_1
...