【问题标题】:Prisma Deploy Docker error "Could not connect to server"Prisma 部署 Docker 错误“无法连接到服务器”
【发布时间】:2018-12-22 09:53:54
【问题描述】:

这是我已经完成的步骤

prisma init

我在本地(不存在)中为数据库设置了 postgresql。

它创建了 3 个文件,datamodel.graphql、docker-compose.yml、prisma.yml

docker-compose up -d

我确认它运行成功 但是如果我打电话给prisma deploy,它会显示错误

Could not connect to server at http://localhost:4466. Please check if your server is running.

我所做的只是手册中描述的标准操作,并且没有自定义 https://www.prisma.io/docs/tutorials/deploy-prisma-servers/local-(docker)-meemaesh3k

这是 docker-compose.yml

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.11
    restart: always
    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: postgres
            host: localhost
            port: '5432'
            database: databasename
            schema: public
            user: postgres
            password: root
            migrations: true

我错过了什么?

【问题讨论】:

    标签: docker graphql prisma


    【解决方案1】:

    而不是 docker-compose up -d 使用:

    docker-compose up
    

    并保持窗口运行,这将使 localhost:4466 保持活动状态。

    注意:如果你想连接到docker中创建的数据库,你需要通过以下方式映射端口:

    docker run --name <ENTER_NAME> -e POSTGRES_PASSWORD=<ENTER_PASSWORD> -d -p 5433:5432 postgres  
    

    在上述情况下 PORT(5433) = HOST_PORT 和 PORT(5432) = CONTAINER_PORT

    【讨论】:

      【解决方案2】:

      我找到了解决我遇到的同样问题的方法

      docker-machine ip default
      

      使用此地址并将“localhost”替换为带有上述命令的 IP,以在 prisma.yml 文件中看起来像这样

      endpoint: http://1xx.1xx.xx.xxx:4466
      

      答案来自这个Github Link

      【讨论】:

      • 我得到这个输出:“Docker 机器“默认”不存在。使用“docker-machine ls”列出机器。使用“docker-machine create”添加一个新的。”如何创建一个 docker-machine?
      • @kwoxer 试试这个命令:docker-machine create default。你可以在这里阅读更多:docs.docker.com/machine/get-started
      • 我现在使用 mongo 作为 docker 服务。所以我的问题现在已经解决了。
      • 上述过程对我有用。唯一的区别是我必须运行 docker-machine ls 才能获得 IP。
      【解决方案3】:

      documentation mentions:

      docker ps
      

      你应该会看到类似这样的输出:

      $ docker ps
      CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                    NAMES
      2b799c529e73        prismagraphql/prisma:1.7            "/bin/sh -c /app/sta…"   17 hours ago        Up 7 hours          0.0.0.0:4466->4466/tcp   myapp_prisma_1
      757dfba212f7        mysql:5.7                           "docker-entrypoint.s…"   17 hours ago  
      

      (这里使用 mysql 显示,但对 postgresql 也有效)

      重点是:应该有两个容器在运行,而不是一个。

      检查docker-compose logs 看看为什么第二个(数据库)没有启动。

      【讨论】:

      • 谢谢,我在本地运行 postgresql,在这种情况下如何设置 prisma 以使用托管服务器的本地数据库?
      • @NomuraNori 考虑到 prisma 被隔离在容器中,我不确定它是否能够访问在本地主机上运行的服务(如 postgresql)。
      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2019-01-15
      • 2019-10-08
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      相关资源
      最近更新 更多