【问题标题】:Can not connect PostgreSQL database from docker to python无法将 PostgreSQL 数据库从 docker 连接到 python
【发布时间】:2019-07-04 04:18:38
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • 怎么样?你能解释一下吗?我读了,但没有得到它
  • 你的 Python 代码在哪里运行;在主机上还是在容器中?如果在容器中,你是如何启动它的?
  • 我在那里与 Jupyter 合作
  • 对不起,这个链接在这里可能无关紧要。我以为你试图在adminer 中访问db,对吗?

标签: python postgresql docker


【解决方案1】:

您需要像这样在 docker compose 中公开 BD 端口:

db:
image: postgres
restart: always
environment:
  POSTGRES_PASSWORD: admin_123
  POSTGRES_USER: admin
ports:
    - "5432:5432"

然后连接 localhost:5432

【讨论】:

    【解决方案2】:

    另一种可能的情况,

    检查端口是否已被其他 docker 容器使用。 使用命令:

    $ docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
    

    【讨论】:

      【解决方案3】:

      这是我的 docker-compose.yml

      $ cat docker-compose.yml

      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%
      

      现在您可以在 PgAdmin4 中设置一个新的服务器来测试连接:

      host: localhost
      port: 5432
      maintenance database: postgres
      username: abcUser
      password: Password
      

      【讨论】:

        猜你喜欢
        • 2022-01-04
        • 1970-01-01
        • 2021-04-05
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2023-02-02
        • 2017-11-27
        • 2013-04-05
        相关资源
        最近更新 更多