Я новичок в Docker, и я пытаюсь поместить свой API Django rest в контейнер с Nginx, Gunicorn и Postgres, используя docker-compose и docker-machine. После этого урока: https://realpython.com/blog/python/django-development-with-docker-compose-and-machine/Docker Django не удалось подключиться к серверу: Соединение отказано
Большая часть моего кода совпадает с учебником (https://github.com/realpython/dockerizing-django). с некоторыми незначительными изменениями имени.
это мой docker-compose.yml
(я изменил команду gunicorn в runserver для целей отладки)
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
- redis:redis
volumes:
- /usr/src/app
- /usr/src/app/static
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/python manage.py runserver
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
image: postgres:latest
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data/
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
volumes:
- redisdata:/data
И это в моем settings.py Джанго:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'postgres',
'PORT': '5432',
}
}
Nginx и Postgres (и Redis), однако мой сервер django не запускается по этой ошибке:
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?
У меня много googled, и я проверил, что postgres запущен, на порт 5432, я могу подключиться к нему с помощью команды psql.
Я потерян. Какая у меня ошибка?
EDIT: похоже, что он не использует файл settings.py или что-то еще, так как он спрашивает, работает ли сервер на локальном хосте, в то время как настройки должны искать postgres.
Спасибо за ответ, но линия есть! Все работает локально. –
@ Ваше обновление, это правильно. И репо, о котором я говорил, работает из коробки для меня :). Мне удалось заставить его работать, но я не уверен, как именно. –