gpt4 book ai didi

python - 将Django连接到Docker Postgres实例,引发django.db.utils.OperationalError

转载 作者:行者123 更新时间:2023-12-02 19:16:12 35 4
gpt4 key购买 nike

我正在尝试在本地计算机上执行django项目,该项目需要Postgres。
我几乎不了解docker。我从docker hub提取了postgres镜像并执行了postinin命令,如postgres docker hub页面中instructions所建议的那样。

$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker 容器已启动:
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
402180487f68 postgres "docker-entrypoint.s…" 2 hours ago Up 2 hours 5432/tcp some-postgres
但是我不能让Django连接到它。 (Django在我的本地计算机上运行,​​而不是在docker上运行)Django设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'mysecretpassword',
'HOST': 'localhost',
'PORT': 5432,
}
}
如果我使用上述设置执行迁移,则错误为:
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
我假设连接不是良性拒绝的,因为如果我停止容器,则错误是相同的。
一些教程/答案建议的HOST应该是容器名称。对我来说,这没有多大意义,因为我不知道Django应该如何解决这个问题,但是我还是尝试了:
        'HOST': 'some-postgres',
引发的错误是:
django.db.utils.OperationalError: could not translate host name "some-postgres" to address: nodename nor servname provided, or not known
我已经检查了几个问题和教程,但是它们似乎都使用docker-composer和/或在Django中也有django项目。仍然无法使项目连接到postgres。

最佳答案

我相信您必须从docker转发端口5432:
https://docs.docker.com/config/containers/container-networking/#published-ports
一个很好的类比是一个网络服务器-想象您将在端口8000上的容器中启动django应用程序。您不能简单地打开firefox并从主机内部导航到localhost:8000,因为该应用程序在隔离的环境中运行。

关于python - 将Django连接到Docker Postgres实例,引发django.db.utils.OperationalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63384399/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com