Почему Nginx обслуживает мое приложение django на порту 8000 вместо 80?
Я создал приложение, используя django https://github.com/pyalz/video_app. Теперь я запускаю это приложение, используя django compose build django compose up .
Когда я открываю http://0.0.0.0:8000, он приходит со статическими файлами. Когда я открываю http://0.0.0.0:80, он не показывает мне статические файлы
**Docker compose **
version: '3.7'
services:
django_gunicorn:
volumes:
- static:/static
env_file:
- .env
build:
context: .
ports:
- "8000:8000"
nginx:
build: ./nginx
volumes:
- static:/static
ports:
- "80:80"
depends_on:
- django_gunicorn
volumes:
static:
Файл докера
FROM python:3.10.0-alpine
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY ./video_app /app
WORKDIR /app
COPY ./entrypoint.sh /
ENTRYPOINT ["sh", "/entrypoint.sh"]
Entry.sh
#!/bin/sh
python manage.py migrate --no-input
python manage.py collectstatic --no-input
DJANGO_SUPERUSER_PASSWORD=$SUPER_USER_PASSWORD python manage.py createsuperuser --username $SUPER_USER_NAME --email $SUPER_USER_EMAIL --noinput
gunicorn video_app.wsgi:application --bind 0.0.0.0:8000
NGINX Docker файл
FROM nginx:1.19.0-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Default.conf
upstream django {
server django_gunicorn:8000;
}
server {
listen 80;
location / {
proxy_pass http://django;
}
location /static/ {
alias /static/;
}
}
введите описание изображения здесь введите описание изображения здесь
Помогите, пожалуйста, решить этот вопрос
В вашем файле default.conf указан только адрес докера Django, но не указан порт, поэтому по умолчанию используется порт 80. Измените его на следующий:
server {
listen 80;
location / {
proxy_pass http://django:8000;
}
location /static/ {
alias /static/;
}
}