Для подключения к PostgreSQL, который находится на хосте, из Docker контейнера необходимо выполнить несколько шагов.
- Убедитесь, что PostgreSQL уже установлен на вашем хосте. Если его еще нет, установите его, следуя инструкциям операционной системы.
- В вашем Dockerfile добавьте следующую строку, чтобы установить необходимые пакеты python:
RUN apk add --no-cache postgresql-dev
- В вашем файле настроек Django (обычно
settings.py
) измените настройки для базы данных PostgreSQL:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'название_базы_данных', 'USER': 'пользователь', 'PASSWORD': 'пароль', 'HOST': 'название_хоста', 'PORT': 'порт_хоста', } }
Замените название_базы_данных
, пользователь
, пароль
, название_хоста
и порт_хоста
на соответствующие значения для вашей базы данных PostgreSQL.
- Запустите контейнер, указав переменные окружения для подключения к базе данных. Данные переменные могут быть указаны в
docker-compose.yml
или переданы через командную строку:
docker run -e POSTGRES_USER=пользователь -e POSTGRES_PASSWORD=пароль -e POSTGRES_DB=название_базы_данных -p порт_хоста:порт_хоста -d postgres
Замените пользователь
, пароль
, название_базы_данных
и порт_хоста
на соответствующие значения.
- Перезапустите ваш Docker контейнер Django, чтобы он мог подключиться к базе данных PostgreSQL:
docker restart ваш_контейнер
После этого ваш Django контейнер должен успешно подключиться к PostgreSQL на хосте.