2017-06-16 40 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的訪問。