无法将PostgreSQL数据库从docker连接到python

时间:2019-02-10 14:48:13

标签: python postgresql docker

我正在尝试将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”转换为地址:   提供的节点名或服务名,或者未知

我做错了什么?

3 个答案:

答案 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%