Mam dwa kontenery Docker. Pierwszym z nich jest kontener Postgresql, który uruchamiam za pomocą następującego polecenia.Łączenie Django i PostgreSQL z Dockerem
sudo docker run -v /home/mpmsp/project/ezdict/postgresql/data:/var/lib/postgresql/data -p 127.0.0.1:5432:5432 -name my-postgres -d postgres
Jest on oparty na official image i działa doskonale, mogę podłączyć do PostgreSQL z hosta.
Drugi pojemnik to pojemnik z moją aplikacją Django. Obraz jest zbudowana w oparciu o następujące Dockerfile (w oparciu o this image):
FROM python:3-onbuild
EXPOSE 8000 5432
CMD ["/bin/bash"]
I uruchomić ten pojemnik z następującego polecenia
sudo docker run --link my-postgres:my-postgres -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app
wyjście doker ps pokazuje, że pojemniki są połączone
NAMES
my-app/my-postgres, my-postgres
Jednak, gdy przejdę do localhost: 8000, widzę stronę błędu z Django, z następującym wynikiem:
OperationalError at /api-auth/login/
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
Request Method: GET
Request URL: http://127.0.0.1:8000/api-auth/login/
Django Version: 1.6.4
Exception Type: OperationalError
Exception Value:
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
Exception Location: /usr/local/lib/python3.4/site-packages/psycopg2/__init__.py in connect, line 164
Python Executable: /usr/local/bin/python
Python Version: 3.4.1
Python Path:
['/usr/src/app',
'/usr/local/lib/python34.zip',
'/usr/local/lib/python3.4',
'/usr/local/lib/python3.4/plat-linux',
'/usr/local/lib/python3.4/lib-dynload',
'/root/.local/lib/python3.4/site-packages',
'/usr/local/lib/python3.4/site-packages']
Server time: Птн, 10 Окт 2014 12:07:07 +0400
settings.py aplikacji
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Jak zrobić łącząc pracę? Dzięki z góry
Co znajduje się o db sync/migracji? Zdałem sobie sprawę, że nie mogę połączyć kontenera PostgreSQL na kompilacji, ale muszę zrobić syncdb i jakoś migrować przed uruchomieniem serwera django. – syabro
, więc drugi argument (po dwukropku) w '--link my-postgres: [2nd arg]' staje się wartością klawisza 'HOST' w' domyślnych 'ustawieniach dotyczących' DATABASES'ów Django? – pkaramol
tak, składnia to '--link :' –
Thomasleveil