gpt4 book ai didi

python - seetings.py 或 docker 中的数据库配置错误

转载 作者:行者123 更新时间:2023-11-29 13:41:53 25 4
gpt4 key购买 nike

我正在使用本手册学习如何使用 Compose + Django https://docs.docker.com/compose/django/

这是我的配置文件

docker-compose.yml

version: '3'

services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

设置.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}

当我使用 docker-compose up 运行时一切正常。

但是当我使用 python manage.py runserver 运行时我得到了这个错误psycopg2.OperationalError:无法将主机名“db”转换为地址:名称或服务未知

猜猜,我有错误的配置

最佳答案

你忘了设置 hostnamedb服务。

version: '3'

services:
db:
image: postgres
hostname: db
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

提示:不要使用 runserver当您部署生产服务器时。检查this doc

评论中描述了解决方案

编辑)

单独设置示例。制作原创 settings.pybase.py在设置文件夹中。

<your_app>/settings/local.py

from .base import *

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'localhost',
'PORT': 5432,
}
}

<your_app>/settings/deploy.py

from .base import *

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}

最后,您的设置文件夹包含三个 python 文件。 base.py , local.py , deploy.py

当您使用本地设置运行服务器时,python manage.py runserver --settings <your_app>.settings.local .

关于python - seetings.py 或 docker 中的数据库配置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142710/

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