Django与docker-compose - psycopg2连接错误

34 浏览
0 Comments

Django与docker-compose - psycopg2连接错误

我正在尝试使用docker-compose运行一个简单的Django应用程序,使用PostgreSQL作为数据库。PostgreSQL容器运行良好并且可以访问,但是我无法使用Python从Django容器内部访问它。

这是我的docker-compose.yaml文件内容:

版本:"3"

服务:

db:

图像:"postgres"

重新启动:始终

环境:

- POSTGRES_USER=$ {DB_USER}

- POSTGRES_PASSWORD=$ {DB_PASSWORD}

卷:

- pgdata:/ var / lib / postgresql /数据

django:

构建:./ qc_django

端口:

- "8080:8080"

环境:

- DB_NAME = django

- DB_USER = $ {DB_USER}

- DB_PASSWORD = $ {DB_PASSWORD}

- DB_HOST = db

- DB_PORT = 5432

- DEBUG = True

依赖项:

- db

卷:

pgdata:

这是Django设置中的数据库设置:

DATABASES = {

'default':{

'ENGINE':'django.db.backends.postgresql',

'NAME':env(“DB_NAME”),

'USER':env(“DB_USER”),

'PASSWORD':env(“DB_PASSWORD”),

'HOST':env(“DB_HOST”),

'PORT':env(“DB_PORT”),

}

}

大约一分钟后,它会输出以下错误:

django.db.utils.OperationalError:无法连接到服务器:连接超时

服务器是否在主机“db”(172.21.0.2)上运行,并且是否接受端口5432上的TCP / IP连接?

0
0 Comments

问题的原因:重启并使用--remove-orphans删除孤立容器后,原始配置可以正常工作。看起来可能有一些干扰。

解决方法:重启并使用--remove-orphans删除孤立容器。

0
0 Comments

问题原因:PostgreSQL服务尚未启动,因此5432端口未监听。

解决方法:可以按照指南中的建议,在启动Django应用程序之前放置一个脚本,等待数据库服务启动。此外,还可以尝试通过删除孤立容器来解决问题。

0