我正在尝试将PostgreSQL与python结合使用。我已使用以下docker撰写文件。
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
adminer:
image: adminer
restart: always
ports:
- 8080:8080
使用以下代码,我试图连接数据库。
conn = psycopg2.connect(
database = "db_test",
user ="admin",
password = "admin_123",
host = "db"
)
但是我收到此错误。
OperationalError:无法将主机名“ db”转换为地址: 提供的节点名或服务名,或者未知
我做错了什么?
答案 0 :(得分:3)
您需要在docker compose中公开BD端口,如下所示:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
ports:
- "5432:5432"
然后与 localhost:5432
连接答案 1 :(得分:0)
另一种可能的情况,
检查端口是否已被其他Docker容器使用。 使用命令:
$ docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
答案 2 :(得分:0)
这是我的docker-compose.yml
$ cat docker-compose.yml
create_alias()
现在在PgAdmin4中,您可以按如下所示设置新服务器以测试连接:
version: '3.1' # specify docker-compose version
services:
dockerpgdb:
image: postgres
ports:
- "5432:5432"
restart: always
environment:
POSTGRES_PASSWORD: Password
POSTGRES_DB: dockerpgdb
POSTGRES_USER: abcUser
volumes:
- ./data:/var/lib/postgresql%