2016-07-18 3 views
1

Я создаю конфигурацию docker-compose для приложения django, файл Dockerfile успешно завершается, но когда я их компоную, django возвращает проблему - невозможно подключиться к postgres.docker-compose не запускает postgres

Я запускаю сборку профайлов в профайле, найденных redis и posgres, которые невозможно подключить.

Мой докер-compose.yml файл

web: 
build: . 
    ports: 
    - "8000:8000" 
environment: 
    - 'DATABASE_HOST=db' 
    - 'DATABASE_NAME=mydb' 
    - 'DATABASE_USER=root' 
    - 'DATABASE_PASSWORD=root' 
links: 
    - db 
db: 
    image: postgres:9.1 

при запуске Судо докер-компоновать до я получил следующее сообщение об ошибке.

web_1 | File "/usr/local/lib/python2.7/site packages/django/db/backends/postgresql/base.py", line 175, in get_new_connection 

web_1 |  connection = Database.connect(**conn_params) 
web_1 | File "/usr/local/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect 
web_1 |  conn = _connect(dsn, connection_factory=connection_factory, async=async) 
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused 
web_1 |  Is the server running on host "localhost" (::1) and accepting 
web_1 |  TCP/IP connections on port 5432? 
web_1 | could not connect to server: Connection refused 
web_1 |  Is the server running on host "localhost" (127.0.0.1) and accepting 
web_1 |  TCP/IP connections on port 5432? 
+0

У вас есть что-нибудь в настройках Django, чтобы использовать эти переменные среды для определения базы данных? –

+0

мои настройки Джанго являются: 'БАЗ = { 'по умолчанию': { 'МОТОР': 'django.db.backends.postgresql_psycopg2', 'NAME': 'aiotadb', 'USER': 'корень', 'PASSWORD': 'root', 'HOST': 'db', 'PORT': '5432', } } ' –

+0

также попытался изменить' 'HOST ':' localhost'' в файле настроек и изменить '' DATABASE_HOST = localhost'' в файле docker-compose.yml. Похоже на ту же проблему. –

ответ

2

Я также построил кластеризацию с docker-compose, это, вероятно, поможет вам и ответить на ваши проблемы (вот repo). Вы можете увидеть файл docker-compose.yml и файл djangosettings (я указал строки, которые вам нужны).

Вы можете также клонировать этот репозиторий и получить django, angular2, postgresql и nginx контейнеры, все ссылки уже вместе.

+0

Спасибо @Nir Я тоже пробовал это, но все же ошибка такая же, что * Сервер работает на хосте «localhost» (:: 1) и принимает *. Я пробовал докер, используя sqlite3, и он работал как прелесть. –

+0

@AshishK. заметьте мой файл docker-compose.yml, мою базу данных 'server' (django)' depend_on'. Это означает, что контейнер 'server' будет всегда ждать контейнера' database' и разворачиваться после него, а не раньше. Также загрузите файл 'settings.py', обратите внимание на« HOST »:« database »и« PORT »: 5432' в моей (я думаю, это ваша проблема. Ваш хост должен быть именем контейнера базы данных). – Nir

+0

Thanks.Found the issue.Running успешно сейчас. –

0

Вы связываете свой веб-контейнер с контейнером postgres, но вы не определяете имя базы данных, пароль и пользователя.

web: 
    build: . 
    ports: 
    - "8000:8000" 
    links: 
    - db 
    db: 
    restart: always 
    image: postgres:9.1 
    ports: 
     - "5432:5432" 
    volumes: 
     - pgvolume:/var/lib/postgresql/data 
    environment: 
     - POSTGRES_PASSWORD=root 
     - POSTGRES_DB= aiotadb 
     - POSTGRES_USER=root 
    data: 
    restart: always 
    image: postgres:9.1 
    volumes: 
     - /var/lib/postgresql 
    command: tail -f /dev/null 

Кроме того, если вы уже определить параметры базы данных в файле настроек, вам не нужно объявить его как ENV переменных в веб-контейнере.

Смежные вопросы