我正在本地运行此脚本。在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
这可能是因为当您启动容器时,它们可以根据您在内部提供的名称解析主机名,但是如果您想从外部访问容器(我假设您想访问postgres db),您还需要通过向postgres容器添加
-p 5432:5432
来打开postgres容器的端口。如果要从同一网络上的另一个容器访问postgres,请使用db:5432
连接,并从外部使用localhost:5432
编辑: 试试这个作为你的
docker-compose.yml
相关问题 更多 >
编程相关推荐