PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verknüpfung von Django und Postgresql mit Docker

Das Dockerfile für Ihr Django-Image sollte Port 5432 nicht verfügbar machen da kein Postgresql-Server in einem Container ausgeführt wird, der aus diesem Image erstellt wurde:

FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]

Wenn Sie dann den Django-Container ausführen, verknüpfen Sie ihn mit

--link my-postgres:my-postgres

Ihre Einstellungen für die Datenbank sind falsch.

Im Django-Container:127.0.0.1 bezieht sich auf den Django-Container, der keinen Dienst ausführt, der Port 5432 überwacht.

Ihre settings.py-Datei sollte also sein:

  DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'mydb',                      
       'USER': 'postgres',
       'PASSWORD': '',
       'HOST': 'my-postgres',                      
       'PORT': '5432',                      
    }
  }

Während Sie Ihren Django-Container ausführen mit:

sudo docker run --link my-postgres:db -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app

dann Ihre settings.py Datei müsste lauten:

  DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'mydb',                      
       'USER': 'postgres',
       'PASSWORD': '',
       'HOST': 'db',                      
       'PORT': '5432',                      
    }
  }