gpt4 book ai didi

django - Django Nginx Docker Gunicorn无法达到

转载 作者:行者123 更新时间:2023-12-02 18:21:39 25 4
gpt4 key购买 nike

很抱歉,答案似乎很明显,但是过去几个小时我一直在ash头。

我一直在关注多个教程,以期对我的应用程序进行Docker化。无论url:port只是URL的哪种组合,我都尝试无法访问页面。

我零提示我在做什么错。我假设以下内容:

  • NGINX配置错误。 upstream web如何知道web是什么?我假设docker公开了它,但不确定这是否正确。
  • Web容器未正确公开地址和端口?

  • 我尝试了多种设置,但没有用。

    我有以下内容:
    Dockerfile
    FROM python:3
    ENV PYTHONUNBUFFERED 1
    RUN mkdir /code
    WORKDIR /code
    ADD requirements.txt /code/
    RUN pip install -r requirements.txt
    ADD . /code/
    ADD ./django.conf /etc/nginx/conf.d/default.conf

    #COPY ./django.conf /etc/nginx/sites-available/
    #RUN ln -s /etc/nginx/sites-available/django.conf /etc/nginx/sites-enabled
    docker-compose.yml
    version: '3'

    services:
    db:
    image: postgres:9.6
    ports:
    - "5432:5432"
    environment:
    - POSTGRES_USER=random_user
    - POSTGRES_PASSWORD=random_password
    redis:
    restart: always
    image: redis:4.0
    expose:
    - "6379"

    nginx:
    image: nginx:1.14.0
    container_name: nginx01
    ports:
    - "8000:8000"
    volumes:
    - ./code
    depends_on:
    - web
    web:
    build: .
    container_name: backend-api
    command: bash -c "python manage.py migrate && python manage.py collectstatic --noinput && gunicorn ops4_backend.wsgi -b 0.0.0.0:8000"
    depends_on:
    - db
    volumes:
    - ./code
    expose:
    - "8000"
    restart: always
    django.conf
    upstream web {
    ip_hash;
    server web:8000;
    }

    # portal
    server {
    location / {
    proxy_pass http://web:8000;
    }
    listen 8000;
    server_name localhost;

    location /static {
    autoindex on;
    alias /src/static/;
    }
    }
    docker ps -a docker ps -a

    最佳答案

    昨天我做了几乎相同的任务,而我看到的唯一有值(value)的区别是,您在Django容器中包含了django.conf,而不是在nginx中。我在nginxdocker-compose.yml部分有以下内容:
    - ./nginx:/etc/nginx/conf.d(其中./nginx是带有django.conf的文件夹)

    编辑:这是我的docker-compose.yml:

    version: '3'

    services:
    nginx:
    image: nginx
    restart: always
    ports:
    - "80:8000"
    volumes:
    - ./nginx:/etc/nginx/conf.d
    - ./static_cdn:/static
    depends_on:
    - web
    db:
    image: postgres
    restart: always
    web:
    build: .
    restart: always
    command: bash -c "python3 manage.py makemigrations && python3 manage.py migrate && python3 manage.py collectstatic --no-input && gunicorn core.wsgi -b 0.0.0.0:8000"
    volumes:
    - .:/code
    expose:
    - "8000"
    depends_on:
    - db
    django.conf:
    upstream web {
    ip_hash;
    server web:8000;
    }

    server {
    location /static/ {
    alias /static/;
    }

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

    通过此设置,nginx可在 127.0.0.1:80127.0.0.1处获得,因为80是默认的http端口。

    关于django - Django Nginx Docker Gunicorn无法达到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557216/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com