我将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
答案 0 :(得分:2)
尝试在db容器中公开端口
db:
image: postgres:latest
container_name: pz01
ports:
- "5432:5432"
volumes:
- ./postgres-data:/var/lib/postgresql/data
然后,使用localhost:5432进行连接