Django Работает ли сервер на хосте "localhost" (127.0.0.1) и принимает web | TCP/IP соединения на порт 5432?
Я пытаюсь докеризировать мое приложение Django. Мои конфигурации следующие:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost',
'PORT': '5432',
}
}
.env файл
POSTGRES_USER='DB_USER'
POSTGRES_PASSWORD='DB_PASSWORD'
POSTGRES_DB='DB_NAME'
POSTGRES_HOST='localhost'
POSTGRES_PORT='5432'
Dockerfile.web
FROM python:3.9-bullseye
WORKDIR /app
ENV PYTHONUNBUFFERED=1
COPY csgo .
RUN apt-get update -y \
&& apt-get upgrade -y pip \
&& pip install --upgrade pip \
&& pip install -r requirements.txt
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose.yml
version: '3'
services:
web:
container_name: web
build:
context: .
dockerfile: Dockerfile.web
env_file:
- .env
volumes:
- .:/code
ports:
- '8000:8000'
depends_on:
- db
db:
image: postgres:13
restart: always
ports:
- '5432:5432'
env_file:
- .env
volumes:
postgres_data:
Теперь, когда я docker-compose up
все работает нормально, кроме подключения к базе данных. Я получаю эту ошибку:
django.db.utils.OperationalError: could not connect to server: Connection refused
web | Is the server running on host "localhost" (127.0.0.1) and accepting
web | TCP/IP connections on port 5432?
web | could not connect to server: Cannot assign requested address
web | Is the server running on host "localhost" (::1) and accepting
web | TCP/IP connections on port 5432?
Можете ли вы, пожалуйста, помочь мне решить эту проблему? Кроме того, я был бы благодарен за более подробное объяснение определения localhost в контейнерах docker и его подключения.