PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Collegamento di Django e Postgresql con Docker

Il file Docker per la tua immagine Django non dovrebbe esporre la porta 5432 poiché nessun server Postgresql sarà in esecuzione in nessun contenitore creato da quell'immagine:

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

Quindi, mentre esegui il contenitore Django, collegalo con

--link my-postgres:my-postgres

le tue impostazioni per il database non sono corrette.

Nel container Django:127.0.0.1 si riferisce al container Django che non esegue alcun servizio in ascolto sulla porta 5432.

Quindi il tuo file settings.py dovrebbe essere:

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

Mentre esegui il tuo contenitore Django con:

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

quindi il tuo settings.py il file dovrebbe essere:

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