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',
}
}