node.js - 如何在docker容器中连接graphql和prisma?

标签 node.js docker docker-compose graphql prisma

我正在尝试构建一个 docker-compose 文件,该文件运行使用 Prisma 和 mongodb 的 node.js graphql api。
但是我收到了一个错误 请求到 http://localhost:4466/失败,原因:连接 ECONNREFUSED 127.0.0.1:4466 当我尝试从 graphql playground 发送请求时,当我运行 Prisma deploy 或尝试从 graphql 容器内部 ping http:localhost:4466 时出现相同的错误。

我尝试使用默认网络并创建新网络,但我遇到了同样的错误。
我曾尝试在版本 3 中使用链接(已弃用),但我也遇到了同样的错误。

P.S我可以在浏览器中正常打开prisma的playground,链接:http://localhost:4466

这是我的 docker-compose 文件:

version: '3'
services:
  web:
    build: .
    networks: 
      net:
    ports:
    - "80:4000"
    command: wait-for-it/wait-for-it.sh http://localhost:4466 -t 30 -- ./run.sh
  prisma:
    image: prismagraphql/prisma:1.34
    restart: always
    networks: 
      net:
    ports:
    - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        port: 4466
        # uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
        # managementApiSecret: my-secret
        databases:
          default:
            connector: mongo
            uri: mongodb://prisma:prisma@mongo
    command: /bin/sh.sh
  mongo:
    image: mongo:3.6
    restart: always
    networks: 
      net:
    environment:
      MONGO_INITDB_ROOT_USERNAME: prisma
      MONGO_INITDB_ROOT_PASSWORD: prisma
    ports:
      - "27017:27017"
    volumes:
      - mongo:/var/lib/mongo
volumes:
  mongo:
networks: 
      net:

这是 Web 服务的 dockerfile:
FROM node:10

WORKDIR /app

COPY . /app/

RUN yarn install --pure-lockfile 

RUN yarn global add prisma

这是 run.sh 文件:
echo "prisma deploy command "
prisma deploy
echo "get-schema command"
yarn run get-schema
echo "starting command"
yarn run start 

有什么我误解的地方,或者我需要修复什么才能使它工作?

最佳答案

您应该使用 http://prisma:4466作为 Web 容器中的连接 URL。由于您的容器将连接到同一网络,因此容器的名称将是 DNS 名称,因此将解析为具体容器的 IP。

关于node.js - 如何在docker容器中连接graphql和prisma?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57016978/

相关文章:

node.js - 查询 Winston 日志

node.js - sails.js(使用 node.js 和 express.js)的标题或应用名称在哪里?

postgresql - 连接被拒绝 postgres docker

docker - 将 aws 凭据传递给 Docker

Docker 堆栈部署有关顶级对象映射的错误

linux - Docker:端口 80 上没有 NGinx 的多个容器

node.js - Socket.io 日志(客户端未握手客户端应重新连接)

node.js - 如何使用node.js上传目录?

docker - IBM Blockchain Platform在VS代码中创建Fabric环境时出错

haskell - Docker容器中的Yesod应用程序无法发出网络请求