如何用docker-compose设置nginx和django?

我在设置Django时遇到了一些情况,并且需要使用Docker(docker-toolbox,docker-compose)所需的所有依赖项。

我遇到一个错误,而我试图访问我的urlhttp://192.168.99.100:8000/其中说502坏门户(nginx / 1.13.1) 。 由于这是我第一次在Docker上使用nginx的Django,所以对于这个错误我不太明白。

这里是Github: https : //github.com/NuriddinK/Django-Docker

docker-compose.yml:

version: '2' services: nginx: image: nginx:latest container_name: nz01 ports: - "8000:8000" volumes: - ./src:/src - ./config/nginx:/etc/nginx/conf.d - /static:/static depends_on: - web web: ... ... 

Dockerfile:

 FROM python:latest ENV PYTHONUNBUFFERED 1 #ENV C_FORCE_ROOT true ENV APP_USER myapp ENV APP_ROOT /src RUN mkdir /src; RUN groupadd -r ${APP_USER} \ && useradd -r -m \ --home-dir ${APP_ROOT} \ -s /usr/sbin/nologin \ -g ${APP_USER} ${APP_USER} WORKDIR ${APP_ROOT} RUN mkdir /config ADD config/requirements.pip /config/ RUN pip install -r /config/requirements.pip USER ${APP_USER} ADD . ${APP_ROOT} 

config / nginx / … .conf

 upstream web { ip_hash; server web:8000; } server { location /static/ { autoindex on; alias /static/; } location / { proxy_pass http://web/; } listen 8000; server_name localhost; } 

有什么我做错了吗?

这里的问题是与gunicorn命令行参数,缺less-b标志。 它需要用-b标志启动,以便与指定的地址绑定。 在你的情况下, gunicorn将自己绑定到其他容器无法访问的默认值127.0.0.1:8000 。 所以,只需将网页命令更改为以下内容:

 command: bash -c 'python manage.py makemigrations && python manage.py migrate && gunicorn oqtor.wsgi -b 0.0.0.0:8000' 

这应该使你的networking应用程序可以通过nginx访问。