Проблема с динамическими медиа в проекте django при развертывании на сервере с помощью docker и nginx

У меня проблема с изображением, которое я загружаю в django-admin. Фотографии добавляются в папку media в запущенном контейнере, но кажется, что фотографии пытаются быть взяты из локальных файлов, где их нет. Все работает на моем собственном компьютере, но я столкнулся с этой проблемой при попытке развернуть на сервере

Вот как это выглядит на сайте введите описание изображения здесь

nginx не может найти его введите описание изображения здесь

я пробовал что-то подобное Django static files not served with Docker но это не работает для меня

Вот структура моих файлов:

booking2
  assets
  media
  main-app
  booking2
  docker
   nginx
    Dockerfile
    nginx.conf
 docker-compose.yml
 Dockerfile
 entrypoint.sh
 .env

главный Dockerfile

FROM python:3.8-alpine

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /app

RUN apk --update add
RUN apk add gcc gcc python3-dev libc-dev libffi-dev jpeg-dev zlib-dev libjpeg libxml2-dev libxml2 libxslt-dev gettext
RUN apk add postgresql-dev

RUN pip install --upgrade pip

COPY ./requirements.txt .
RUN pip install -r requirements.txt


COPY . .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]

docker-compose.yml

version: "3.7"


services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    entrypoint:
      - ./entrypoint.sh
    depends_on:
      - postgresdb

  postgresdb:
    build:
      context: ./docker/postgres
      dockerfile: Dockerfile
    environment:
      - POSTGRES_PASSWORD=devpass
    volumes:
      - ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "5432:5432"
  nginx:
    build:
      context: ./docker/nginx
      dockerfile: Dockerfile
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - web
      - postgresdb
    volumes:
      - ./assets/:/assets
      - ./media/:/media

entrypoint.sh

#!/usr/bin/env sh


python manage.py makemigrations --no-input
python manage.py migrate --no-input
python manage.py collectstatic --no-input

gunicorn booking2.wsgi:application --bind 0.0.0.0:8000 --reload -w 4

Nginx Dockerfile

FROM nginx:1.19.0-alpine
        
RUN rm /etc/nginx/conf.d/default.conf
        
COPY nginx.conf /etc/nginx/conf.d

Nginx conf file

upstream web {
        server web:8000;
    }
    
    server {
        listen 80;
        server_name localhost;
        
        
    location / {
        proxy_pass http://web;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
    }
    location /assets/ {
        alias /assets/;
    }
    location /media/ {
        alias /media/;
    }
   }

Это мои медиа настройки

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Вернуться на верх