Prisma 部署 Docker 错误 "Could not connect to server"
Prisma Deploy Docker error "Could not connect to server"
这是我完成的步骤
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 ps
You should see output similar to this:
$ 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
以了解为什么第二个(数据库)没有启动。
我找到了解决我面临的相同问题的方法
docker-machine ip default
使用此地址并使用上述命令将 "localhost" 替换为 IP,在 prisma.yml 文件中看起来像这样
endpoint: http://1xx.1xx.xx.xxx:4466
答案参考自此Github Link
而不是docker-compose up -d
使用:
docker-compose up
并保持 window 运行,这将使 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
这是我完成的步骤
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 ps
You should see output similar to this:
$ 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
以了解为什么第二个(数据库)没有启动。
我找到了解决我面临的相同问题的方法
docker-machine ip default
使用此地址并使用上述命令将 "localhost" 替换为 IP,在 prisma.yml 文件中看起来像这样
endpoint: http://1xx.1xx.xx.xxx:4466
答案参考自此Github Link
而不是docker-compose up -d 使用:
docker-compose up
并保持 window 运行,这将使 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