【发布时间】:2021-03-27 13:28:53
【问题描述】:
我在本地运行这个脚本。在 postgres 连接上,我面临“发生异常:OperationalError 无法将主机名“db”转换为地址:未知主机”。数据库已启动,我使用它启动了
docker run --publish 8000:8000 --detach --name db REMOTEURL:latest
当我使用 docker-compose 执行相同操作并执行 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
【问题讨论】:
标签: python django postgresql docker docker-compose