Docker Django无法连接到服务器:连接被拒绝

我是Docker的新手,我正在尝试使用docker-compose和docker-machine将我的Django rest API放入Nginx,Gunicorn和Postgres的容器中。 以下教程: https : //realpython.com/blog/python/django-development-with-docker-compose-and-machine/

我的大部分代码与教程( https://github.com/realpython/dockerizing-django )相同。 有一些小的名字变化。

这是我docker-compose.yml (为了debugging目的,我把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 

这是在我Django 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? 

我GOOGLE了很多,我已经validationpostgres正在运行,在端口5432,我可以连接到它使用psql命令。

我搞不清楚了。 我的错误是什么?

编辑:它似乎没有使用我的settings.py文件或东西,因为它是问服务器是否在本地主机上运行,​​而设置应该寻找postgres。

检出你的manage.py,应该有一行

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 

如果没有这样的路线,把它

把你的DJANGO_SETTINGS_MODULE关于PYTHONPATH

UPD我克隆你的回购,并通过在docker-compose.yml中更改命令启动Web服务

 - command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000 + command: python manage.py runserver 0.0.0.0:8000 

我确定DJANGO_SETTINGS_MODULE是正确的。