Plik Dockera dla twojego obrazu Django nie powinien ujawniać portu 5432
ponieważ żaden serwer Postgresql nie będzie działał w żadnym kontenerze utworzonym z tego obrazu:
FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]
Następnie, gdy uruchamiasz kontener Django, łącząc go z
--link my-postgres:my-postgres
Twoje ustawienia bazy danych są nieprawidłowe.
W kontenerze Django:127.0.0.1 odnosi się do kontenera Django, który nie obsługuje żadnej usługi nasłuchującej na porcie 5432.
Więc twój plik settings.py powinien być:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'my-postgres',
'PORT': '5432',
}
}
Gdy uruchamiasz kontener Django za pomocą:
sudo docker run --link my-postgres:db -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app
następnie Twój settings.py plik musiałby być:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'db',
'PORT': '5432',
}
}