将SQL IDE连接到docker db容器吗?

时间:2018-07-20 16:26:05

标签: sql docker ide

我将docker与以下三项服务结合使用:

version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: nz01
    ports:
      - "8000:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: dz01
    depends_on:
      - db
    volumes:
      - ./src:/src
    expose:
      - "8000"
  db:
    image: postgres:latest
    container_name: pz01
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

一切似乎都运行良好,并且我知道db服务正在172.18.0.2上运行,但是当我使用Datagrip连接到DB以便更快地进行表创建和插入时之类的东西都行不通。

我在Django应用中的配置是:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'pz01',
        'PORT': 5432,
    }
} 

Datagrip上的配置:

'DB_NAME': 'postgres',
'USER': 'postgres',
'HOST': 'pz01',
'PORT': 5432,

我也尝试使用host作为ip和localhost,但都没有用。 密码为null,因为db服务日志显示默认情况下它没有密码。

如何从Macbook连接到Docker数据库?

编辑: 正如@Dihgg所说,我已将端口固定为数据库服务。

我设置为

db:
    image: postgres:latest
    container_name: pz01
    ports:
     - "5433:5432"
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

该端口不是5432:5432,因为这是我得到的值:

ERROR: for db  Cannot start service db: b'driver failed programming external connectivity on endpoint pz01 (146bb3cdada29f75766aa888143b4af17b267d13096db60fb0ccdaedb710e77e): Error starting userland proxy: Bind for 0.0.0.0:5432 failed: port is already allocated'
    ERROR: Encountered errors while bringing up the project.

尽管如此,当我使用pz01作为主机时,无法从Datagrip连接,错误是(尝试使用5432或5433端口且未设置密码):

Host is unknown

当我用作主机ip时,错误是:Connection failed

1 个答案:

答案 0 :(得分:2)

尝试在db容器中公开端口

db:
    image: postgres:latest
    container_name: pz01
    ports:
        - "5432:5432"
    volumes:
    - ./postgres-data:/var/lib/postgresql/data

然后,使用localhost:5432进行连接