Docker 컨테이너에서 실행되는 django 앱에서 호스트 postgresql에 연결

Docker 컨테이너에서 실행되는 django 앱에서 호스트 postgresql에 연결

Docker 컨테이너에서 실행되는 django 앱에서 호스트 postgresql 서버(버전 14)에 연결하려고 합니다.

여기 내 설정이 있습니다

도커-compose.yml:

version: '3'
services: 
   web:
     build: .
       container_name: dm-api
     volumes: 
       - .:/code
       - static:/code/dojo_manager/static
       - media:/code/dojo_manager/media
     expose: 
       - 8080
     extra_hosts:
       - "database:172.17.0.1"
     command: bash -c "systemctl restart cron && python manage.py collectstatic --no input && python manage.py migrate && gunicorn --workers=3 dojo_manager.wsgi -b 0.0.0.0:8080"
   nginx:
     restart: always
     build: ./nginx/
     volumes: 
        - ./nginx/:/etc/nginx/conf.d
        - ./logs/:/code/logs
        - static:/code/static
        - media:/code/media
     ports: 
        - "1221:80"
     links:
        - web  
 volumes: 
   media:
   static:  

pg_hba.conf:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             172.17.0.0/16           md5
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer

ifconfig:

 docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
    inet6 fe80::42:41ff:fe7c:b9e9  prefixlen 64  scopeid 0x20<link>
    ether 02:42:41:7c:b9:e9  txqueuelen 0  (Ethernet)
    RX packets 40651  bytes 6850716 (6.8 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 51087  bytes 570351402 (570.3 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

postgresql.conf:

listen_addresses = '*'

그러나 컨테이너를 시작하면 오류가 발생합니다.

django.db.utils.OperationalError: connection to server at "database" (172.17.0.1), port 5432 failed: FATAL:  no pg_hba.conf entry for host "172.19.0.2", user "dtuser", database "dtdb", SSL encryption
connection to server at "database" (172.17.0.1), port 5432 failed: FATAL:  no pg_hba.conf entry for host "172.19.0.2", user "dtuser", database "dtdb", no encryption

나는 모든 종류의 온라인 리소스와 문서를 시도했습니다. 그러나 연결이 실행되지 않는 것 같습니다.

어떤 팁/도움이라도 주시면 감사하겠습니다. 베스트 베네딕트

답변1

문제는 말 그대로 해당 오류 메시지에 있습니다. 호스트 172.19.0.2에 대한 HBA 항목이 없습니다. 172.16.0.0/16의 연결만 허용합니다. 당신이 원하는 것은 172.16.0.0/12 입니다.

관련 정보