Использование локальной базы данных postgres в контейнере docker
Привет всем, я пытаюсь подключить мою базу данных postgres, установленную в ubuntu 20.04, к контейнеру docker, который будет находиться вне контейнера. Я работаю над проектом django.
Я могу создать базу данных postgres внутри контейнера docker и подключить мой проект django к этой базе данных, но я хочу подключить localdatabase к проекту django, который запущен в контейнере docker
Вот мой файл docker-compose.yml
version: '3.3'
services:
# Description (For the postgres databse)
kapediadb:
image: postgres
restart: always
container_name: kapediadb
# For accessing env data
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
# Description (For django applications)
kapedia:
restart: always
container_name: kapedia
command:
- /bin/bash
- -c
- |
python manage.py makemigrations accounts
python manage.py makemigrations posts
python manage.py makemigrations quiz
python manage.py migrate
gunicorn kapedia.wsgi:application --bind 0.0.0.0:8000
image: kapedia
# Description (define your dockerfile location here)
build: .
volumes:
- .:/kapedia
ports:
- "8000:8000"
depends_on:
- kapediadb
env_file:
- .env
# Description (For volumes)
volumes:
static:
просто вы можете добавить это внутри контейнера проекта:
extra_hosts:
- "host.docker.internal:172.17.0.1"
Чтобы найти IP docker, т.е. 172.17.0.1 (в моем случае), вы можете использовать в терминале локальной машины:
$> ifconfig docker0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
В postgresql.conf,
измените listen_addresses на listen_addresses = '*'
В pg_hba.conf
добавьте это в конце строки
host all all 0.0.0.0/0 md5
Теперь перезапустите службу postgresql
используя, sudo service postgresql restart
Пожалуйста, используйте host.docker.internal
имя хоста для подключения к базе данных из серверного приложения.
Ex: jdbc:postgresql://host.docker.internal:5432/bankDB
Примечание: sudo nano /etc/postgresql/<your_version>/main/postgresql.conf
используйте эту команду для открытия postgresql.conf
файла
Так вы можете подключить вашу локальную базу данных к docker-contaner