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
是正确的。