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 и его подключения.

Вернуться на верх