首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Nginx不听浏览器

Docker Nginx不听浏览器
EN

Stack Overflow用户
提问于 2018-10-28 16:28:41
回答 2查看 1.9K关注 0票数 3

我有一个docker-compose.yml文件:

代码语言:javascript
复制
version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: nz01
    ports:
      - "8001:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: dz01
    depends_on:
      - db
    volumes:
      - ./src:/src
    expose:
      - "8000"
  db:
    image: postgres:latest
    container_name: pz01
    ports:
        - "5433:5432"
    volumes:
      - postgres_database:/var/lib/postgresql/data:Z
volumes:
    postgres_database:
        external: true

而这个文件是:

代码语言:javascript
复制
FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /src
RUN mkdir /static
WORKDIR /src
ADD ./src /src
RUN pip install -r requirements.pip
CMD python manage.py collectstatic --no-input;python manage.py migrate; gunicorn computationalMarketing.wsgi -b 0.0.0.0:8000

web和postgres服务器不返回错误日志,只返回运行docker-compose builddocker-compose up -d时的成功。此时,这三个容器正在运行,但当我转到浏览器并导航到:localhost:8001时,它无法工作。

它显示了“连接已重新启动”错误消息。

尽管如此,web服务器仍然没有返回任何错误,所以我想我在Django应用程序中配置了所有的东西。我真的认为这个问题与Nginx有关,因为当我回顾Nginx log (使用运动学)时,它仍然是空的。

为什么Nginx不听人脉呢?

提示:这个错误发生在一个新的项目中。我试着去了解我是否有什么问题,我正在运行一个旧的项目,它运行的很好。我尝试在我的新文件夹中复制工作项目,删除所有存在的容器,然后尝试在一个新文件夹中运行这个旧项目,这是令人惊讶的。它现在不工作了,尽管它是在另一个文件夹中工作的项目的精确副本.

编辑在回购中我有一个带有helloworld.conf文件的config/nginx文件夹:

代码语言:javascript
复制
upstream web {  
  ip_hash;
  server web:8000;
}

server {

    location /static/ {    
        autoindex on;    
        alias /src/static/; 
    }

    location / {
        proxy_pass http://web/;
    }
    listen 8001;
    server_name localhost;
}

仍然有同样的错误。我没有看到任何日志错误。

Django容器日志

代码语言:javascript
复制
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.
[2018-11-05 13:00:09 +0000] [8] [INFO] Starting gunicorn 19.7.1
[2018-11-05 13:00:09 +0000] [8] [INFO] Listening at: http://0.0.0.0:8000 (8)
[2018-11-05 13:00:09 +0000] [8] [INFO] Using worker: sync
[2018-11-05 13:00:09 +0000] [11] [INFO] Booting worker with pid: 11
EN

回答 2

Stack Overflow用户

发布于 2018-10-29 05:17:48

您的nginx配置应该类似于:

代码语言:javascript
复制
upstream web {  
   ip_hash;
   server web:8000;
}

server {
     location / {
         proxy_pass http://web/;
     }
     listen 8001;
     server_name localhost;
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-30 22:12:04

由于这类问题通常很难调试/再现,所以我创建了虚拟示例来运行Django应用程序并通过Nginx提供服务。你可以试着调整它以适应你的需要。如果我遗漏了一些东西,或者做了不该做的事情,请原谅我,但是我不熟悉Django框架。

Django容器的Dockerfile:

代码语言:javascript
复制
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code && \
    pip install django
WORKDIR /code
ADD helloworld /code

docker-compose.yml:

代码语言:javascript
复制
version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: django
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./helloworld:/code
    expose:
      - "8000"

config/nginx/django.conf:

代码语言:javascript
复制
upstream web {  
   ip_hash;
   server web:8000;
}

server {
     listen 80;
     server_name localhost;

     location / {
         proxy_pass http://web/;
     }
}

Django应用程序在helloworld文件夹中。

对于这个例子,通信量只是简单地传递。正确的方法是使用Unix套接字而不是端口,但我还是不熟悉Django。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53033664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档