[Python] Error related to connecting Django from Docker to Nginx

Discussão em 'Python' iniciado por Stack, Dezembro 24, 2024.

  1. Stack

    Stack Membro Participativo

    I am currently working on Docker and have done the following:

    1. The Django test page was working fine on localhost.
    2. I connected it to Docker.
    3. I also connected Docker to Gunicorn. However, when I try to connect it through Nginx, only the default Nginx page is displayed, and it is not connecting to the application I created.

    nginx/Dockerfile:

    FROM nginx:latest
    RUN rm /etc/nginx/conf.d/default.conf
    COPY nginx.conf /etc/nginx/conf.d


    nginx/nginx.conf:

    upstream daniel_blog {
    server web:8000;
    }

    server {
    listen 80;

    server_name localhost;

    # Default location
    location / {
    proxy_pass http://daniel_blog;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_redirect off;
    }

    # Static files
    location /static/ {
    alias /usr/src/app/_static/;
    }

    # Media files
    location /media/ {
    alias /usr/src/app/_media/;
    }
    }


    .env.dev:

    DEBUG="1"
    SECRET_KEY="django-insecure-88ndzs0z0uzko4x5f=*ngu=#h+a(k=!#ooyvt*0h+78r1n=^oy"
    DJANGO_ALLOWED_HOSTS = localhost 127.0.0.1 [::1]
    SQL_ENGINE=django.db.backends.postgresql
    SQL_DATABASE=daniel_blog_dev
    SQL_USER=daniel_blog_user
    SQL_PASSWORD=daniel_blog_db_password
    SQL_HOST=db
    SQL_PORT=5432


    .env.prod:

    DEBUG=0
    SECRET_KEY=w4+=--yyyigm1-=na@9et*1ldt-q-x4x=57m2xkiru6!oxeh5b
    DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
    SQL_ENGINE=django.db.backends.postgresql
    SQL_DATABASE=daniel_blog_prod
    SQL_USER=daniel_blog_user
    SQL_PASSWORD=daniel_blog_db_password
    SQL_HOST=db
    SQL_PORT=5432


    .env.prod.db:

    POSTGRES_USER=daniel_blog_user
    POSTGRES_PASSWORD=daniel_blog_db_password
    POSTGRES_DB=daniel_blog_prod


    docker-compose.yml:

    services:
    nginx:
    build: ./nginx
    volumes:
    - static_volumes:/usr/src/app/_static
    - media_volumes:/usr/src/app/_media
    ports:
    - 80:80
    depends_on:
    - web
    web:
    build: .
    command: gunicorn daniel_blog.wsgi:application --bind 0.0.0.0:8000
    volumes:
    - static_volumes:/usr/src/app/_static
    - media_volumes:/usr/src/app/_media
    - ./:/usr/src/app/_media
    expose:
    - 8000
    env_file:
    - ./.env.prod
    depends_on:
    - db
    db:
    image: postgres:17.0-alpine
    volumes:
    - postgres_data:/var/lib/postgresql/data/
    env_file:
    - ./.env.prod.db
    volumes:
    postgres_data:
    static_volumes:
    media_volumes:


    Dockerfile:

    FROM python:3.11-slim

    RUN apt-get update && apt-get install -y \
    build-essential \
    libffi-dev \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/*

    RUN apt-get update && apt-get install -y libpq-dev gcc

    WORKDIR /usr/src/app

    COPY requirements.txt ./
    RUN pip install --no-cache-dir -r requirements.txt
    COPY requirements.txt ./

    COPY . .


    DATABASES definitions from the settings.py file:

    DATABASES = {
    'default': {
    'ENGINE': os.environ.get("SQL_ENGINE", 'django.db.backends.postgresql'),
    'NAME': os.environ.get('SQL_DATABASE', 'daniel_blog_dev'),
    'USER': os.environ.get('SQL_USER', 'daniel_blog_user'),
    'PASSWORD': os.environ.get('SQL_PASSWORD', 'daniel_blog_db_password'), # 환경 변수에서 비밀번호 가져오기
    'HOST': os.environ.get('SQL_HOST', 'localhost'), # db 컨테이너의 서비스 이름 사용
    'PORT': os.environ.get('SQL_PORT', '5432'), # 기본 포트 5432
    "OPTIONS": {
    "client_encoding": "UTF8"
    }
    }
    }

    Continue reading...

Compartilhe esta Página