是否将SQL IDE连接到docker数据库容器



我使用的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

所有这些似乎都运行得很好,我知道数据库服务在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,因为数据库服务日志显示默认情况下它没有密码。

如何从我的macbook连接到我的docker数据库?

编辑:正如@Dihgg所说,我在DB服务中修复了端口。

我设置在

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.

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

Host is unknown

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

尝试在数据库容器中公开端口

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

然后,使用localhost:5432连接

最新更新