簡體   English   中英

如何使用docker-compose設置nginx和django?

[英]How to setup nginx and django with docker-compose?

我在設置Django和Docker所需的所有依賴項時遇到了一種情況(docker-toolbox,docker-compose)。

我正在嘗試訪問我的網址時遇到錯誤http://192.168.99.100:8000/其中說502 Bad Gateway(nginx / 1.13.1) 對於這個錯誤,我真的不明白它來自哪里,因為這是我第一次在Docker上使用帶有nginx的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}

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命令行參數,缺少-b標志。 需要使用-b標志啟動它以與指定的地址綁定。 在你的情況下, gunicorn將自己綁定到默認的127.0.0.1:8000 ,這是其他容器無法訪問的。 因此,只需將web命令更改為以下內容:

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

這應該可以通過nginx訪問您的Web應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM