Dockerfile за вашето Django изображение не трябва да излага порт 5432
тъй като нито един сървър на Postgresql няма да работи в контейнер, създаден от това изображение:
FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]
След това, докато изпълнявате контейнера на Django, го свързвате с
--link my-postgres:my-postgres
вашите настройки за базата данни са неправилни.
В контейнера на Django:127.0.0.1 се отнася за контейнера на Django, който не изпълнява никаква услуга, слушаща на порт 5432.
Така че вашият файл settings.py трябва да бъде:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'my-postgres',
'PORT': '5432',
}
}
Докато изпълнявате своя Django контейнер с:
sudo docker run --link my-postgres:db -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app
след това вашият settings.py файлът трябва да бъде:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'db',
'PORT': '5432',
}
}