发生异常:操作错误无法将主机名“db”转换为地址:未知主机

2024-04-26 03:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在本地运行此脚本。在postgres连接上,我面临“发生异常:操作错误” 无法将主机名“db”转换为地址:“未知主机”。数据库启动了,我从

docker run --publish 8000:8000 --detach --name db REMOTEURL:latest

当我使用docker compose和exec对django应用程序执行相同的操作,并将其作为管理命令运行时,它就工作了。守则:

conn_string = "host='db' dbname='taras' user='postgres' password='postgres'"
with psycopg2.connect(conn_string) as connection:
    with connection.cursor() as cursor:
    ... my stuff

我不知道为什么从我的计算机上的本地脚本访问docker容器时,docker名称(url)永远无法识别。还尝试了“localhost”而不是“db”。在docker容器中运行python脚本时,识别其他docker容器(在我的例子中是db)没有问题。我错过了什么

编辑:只是澄清一下,我只运行docker中的数据库。Python脚本在本地启动,在我的windows命令行中使用

python myscript.py

Docker编写文件:

version: "2"
services:
  db:
    image: REMOTEURL:latest
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_HOST_AUTH_METHOD: trust

Tags: docker脚本数据库dbstringaswithpostgres
1条回答
网友
1楼 · 发布于 2024-04-26 03:23:08

这可能是因为当您启动容器时,它们可以根据您在内部提供的名称解析主机名,但是如果您想从外部访问容器(我假设您想访问postgres db),您还需要通过向postgres容器添加-p 5432:5432来打开postgres容器的端口。如果要从同一网络上的另一个容器访问postgres,请使用db:5432连接,并从外部使用localhost:5432

编辑: 试试这个作为你的docker-compose.yml

version: "2"
services:
  db:
    image: REMOTEURL:latest
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_HOST_AUTH_METHOD: trust
    ports:
      - 5432:5432

相关问题 更多 >