Вы забыли установить hostname
в сервис db
.
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
при развертывании производственного сервера. Отметьте этот документ
Решение описано в комментариях
Edit)
отдельный пример настроек. Сделайте ваш оригинал settings.py
до base.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
.