连接到从docker-compose yaml

时间:2019-02-24 11:13:26

标签: postgresql docker

编辑: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数据库(但是它在容器中)。

我做了很多谷歌搜索,但是还没有找到任何解决方案,所以如果有人可以解释我要去哪里错了,我将非常高兴。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在“ prisma”下添加,它将确保等待数据库启动:

depends_on:
      - postgres

当“ prisma”容器尝试连接时,也许您的数据库容器尚未启动。

答案 1 :(得分:0)

发布答案,使人们知道不要打扰-我重新启动了postgresql的brew服务,然后就可以了...很奇怪。