PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Vinculando Django e Postgresql com Docker


O Dockerfile para sua imagem Django não deve expor a porta 5432 pois nenhum servidor Postgresql estará rodando em nenhum container criado a partir dessa imagem:
FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]

Então, como você está executando o contêiner Django vinculando-o com

--link my-postgres:my-postgres

suas configurações para o banco de dados estão incorretas.

No container Django:127.0.0.1 refere-se ao container Django que não está executando nenhum serviço escutando na porta 5432.

Portanto, seu arquivo settings.py deve ser:
  DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'mydb',                      
       'USER': 'postgres',
       'PASSWORD': '',
       'HOST': 'my-postgres',                      
       'PORT': '5432',                      
    }
  }

Conforme você executa seu container Django com:

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

então seu settings.py arquivo teria que ser:
  DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'mydb',                      
       'USER': 'postgres',
       'PASSWORD': '',
       'HOST': 'db',                      
       'PORT': '5432',                      
    }
  }