Dockerfile đối với hình ảnh Django của bạn không được để lộ cổng 5432
vì sẽ không có máy chủ Postgresql nào chạy trong bất kỳ vùng chứa nào được tạo từ hình ảnh đó:
FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]
Sau đó, khi bạn đang chạy vùng chứa Django liên kết nó với
--link my-postgres:my-postgres
cài đặt của bạn cho cơ sở dữ liệu không chính xác.
Trong vùng chứa Django:127.0.0.1 đề cập đến vùng chứa Django không chạy bất kỳ dịch vụ nào đang lắng nghe trên cổng 5432.
Vì vậy, tệp settings.py của bạn phải là:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'my-postgres',
'PORT': '5432',
}
}
Khi bạn chạy vùng chứa Django của mình với:
sudo docker run --link my-postgres:db -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app
sau đó là settings.py của bạn tệp sẽ phải là:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'db',
'PORT': '5432',
}
}