2017-06-16 37 views
0

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

我遇到一个错误,当我试图访问我的网址http://192.168.99.100:8000/其中说502坏网关(nginx/1.13.1)。由于这是我第一次在Docker上使用带有nginx的Django,因此对于这个错误我不太明白。

这里的Github上:https://github.com/NuriddinK/Django-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} 

配置/ 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; 
} 

有什么我做错了吗?

+0

我认为这是在“位置/”指令的问题,应该有路径gunicorn插座文件?.. – Satevg

+0

@Satevg我跟着一个教程,因为我刚刚进入码头,http://ruddra.com/ 2016/08/14/docker-django-nginx-postgres /,所以我真的不怎么配置这部分 – Lindow

回答

2

这里的问题是使用gunicorn命令行参数,缺少-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' 

这应该使你的Web应用程序通过nginx的访问。