编辑:docker-compose文件可以很好地创建一个prisma实例,它可以与数据库通信,但是我还希望能够在命令行上从我的mac机连接到数据库,就好像它是本地计算机一样数据库。
我正在使用docker-compose创建一个连接到postgres容器的pyramida api。这可以正常工作,但是即使我认为我将设置端口转发,也必须先进入容器才能访问postgres实例。这是我的docker-compose yaml:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.13
restart: always
ports:
- "4040:4040"
environment:
PRISMA_CONFIG: |
port: 4040
databases:
default:
connector: postgres
host: postgres
port: 5432
user: prisma
password: prisma
migrations: true
postgres:
image: postgres:latest
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: prisma
POSTGRES_PASSWORD: prisma
volumes:
- postgres:/var/lib/postgresql/data
volumes:
postgres:
当我查看docker ps
时,它在postgres容器的端口栏中有0.0.0.0:5432->5432/tcp
,但是当我尝试任何
psql -h localhost -p 5432 -U prisma
psql -h 0.0.0.0 -p 5432 -U prisma
psql -h 127.0.0.1 -p 5432 -U prisma
我收到一些错误消息,说棱镜没有作用。当我使用-U postgres
尝试相同的操作时,我可以进入数据库,但是没有Prisma数据库(但是它在容器中)。
我做了很多谷歌搜索,但是还没有找到任何解决方案,所以如果有人可以解释我要去哪里错了,我将非常高兴。谢谢!
答案 0 :(得分:0)
尝试在“ prisma”下添加,它将确保等待数据库启动:
depends_on:
- postgres
当“ prisma”容器尝试连接时,也许您的数据库容器尚未启动。
答案 1 :(得分:0)
发布答案,使人们知道不要打扰-我重新启动了postgresql的brew服务,然后就可以了...很奇怪。