Как подключиться к postgresql который лежит на хосте из docker контейнера?

Для подключения к PostgreSQL, который находится на хосте, из Docker контейнера необходимо выполнить несколько шагов.

1. Убедитесь, что PostgreSQL уже установлен на вашем хосте. Если его еще нет, установите его, следуя инструкциям операционной системы.

2. В вашем Dockerfile добавьте следующую строку, чтобы установить необходимые пакеты python:

RUN apk add --no-cache postgresql-dev

3. В вашем файле настроек Django (обычно settings.py) измените настройки для базы данных PostgreSQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'название_базы_данных',
        'USER': 'пользователь',
        'PASSWORD': 'пароль',
        'HOST': 'название_хоста',
        'PORT': 'порт_хоста',
    }
}

Замените название_базы_данных, пользователь, пароль, название_хоста и порт_хоста на соответствующие значения для вашей базы данных PostgreSQL.

4. Запустите контейнер, указав переменные окружения для подключения к базе данных. Данные переменные могут быть указаны в docker-compose.yml или переданы через командную строку:

docker run -e POSTGRES_USER=пользователь -e POSTGRES_PASSWORD=пароль -e POSTGRES_DB=название_базы_данных -p порт_хоста:порт_хоста -d postgres

Замените пользователь, пароль, название_базы_данных и порт_хоста на соответствующие значения.

5. Перезапустите ваш Docker контейнер Django, чтобы он мог подключиться к базе данных PostgreSQL:

docker restart ваш_контейнер

После этого ваш Django контейнер должен успешно подключиться к PostgreSQL на хосте.