Docker Compose - Поле ImageField в Django не может загружать изображения, когда я переношу базу данных с sqlite3 на MySQL в Docker Compose

У меня есть модель Article в приложении Django blog

Файл /backend/blog/models.py

class Article(models.Model):
    class Status(models.TextChoices):
        DRAFT = 'DF', 'Draft'
        PUBLISHED = 'PB', 'Published'

    title = models.CharField(max_length=255)
    slug = models.SlugField(max_length=100, blank=True, unique=True)
    content = MDTextField(null=True, blank=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    comments = models.IntegerField(default=0)
    reactions = models.IntegerField(default=0)
    updated = models.DateTimeField(auto_now=True)
    category = models.ForeignKey(Category, related_name='articles', on_delete=models.SET_NULL, null=True)
    tags = models.ManyToManyField(Tag)
    image_background = models.ImageField(upload_to='articles_images/', blank=True, null=True)
    image_url = models.URLField(max_length=500, blank=True, null=True)  # Updated field to store image URL from Firebase
    intro = models.TextField()
    estimate_time = models.CharField(max_length=50)
    type = models.ForeignKey(Type, on_delete=models.SET_NULL, null=True)
    publish = models.DateTimeField(default=timezone.now)
    status = models.CharField(max_length=2,
                              choices=Status.choices,
                              default=Status.DRAFT)

Далее я переношу базу данных по умолчанию SQLITE3 на MYSQL для проекта Django

Файл /backend/settings.py

# ! Config database for mysql
DATABASES = {
    "default": {
        "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
        "NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, 'db.sqlite3')),
        "USER": os.environ.get("SQL_USER", "myuser"),
        "PASSWORD": os.environ.get("SQL_PASSWORD", "myuserpassword"),
        "HOST": os.environ.get("SQL_HOST", "localhost"),
        "PORT": os.environ.get("SQL_PORT", "3306"),
        'OPTIONS': {
            'charset': 'utf8mb4',
        }
    }
}

Я также настроил путь media для загрузки изображения /backend/settings.py

STATIC_URL = 'static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = (os.path.join(BASE_DIR,"static"), )

Я использовал docker-compose.yml для создания образа и запуска контейнера для backend (django), frontend (nextjs) и базы данных (mysql) для разработки моего проекта

version: '3.8'

services:
  database:
    image: mysql:9.1.0
    container_name: mysql-container
    volumes:
      # mysql_data: data stogare managed by Docker: /var/lib/docker/volumes/
      # See info: docker volume inspect mysql_data
      # /var/lib/mysql: is the default path in container MySQL
      - mysql_data:/var/lib/mysql
    restart: always
    env_file:
      - .env
    environment:
      - MYSQL_ROOT_PASSWORD=${SQL_ROOT_PASSWORD}
      - MYSQL_USER=${SQL_USER}
      - MYSQL_PASSWORD=${SQL_PASSWORD}
      - MYSQL_DATABASE=${SQL_DATABASE}  
      - MYSQL_TCP_PORT=${MYSQL_TCP_PORT}
    ports:
      - "3306:3306"
    networks:
      - default

  backend:
    build:
      dockerfile: Dockerfile
      context: ./backend          # Find location the Dockerfile of backend in the `backend` directory.
    image: django
    container_name: django-container
    restart: always
    env_file:
      - .env
    volumes:
      # - <path_in_host>:<path_in_container>
      - ./backend:/app  # Mount all contents of folder backend into container
      - ./backend/media:/app/media
    ports:
      - "3001:3001"
    command: python manage.py runserver 0.0.0.0:3001
    depends_on:
      - database
    networks:
      - default

  frontend:
    build:
      dockerfile: Dockerfile
      context: ./frontend
    image: nextjs
    container_name: nextjs-container
    restart: always
    volumes:
      - ./frontend:/app
      - /app/node_modules
    ports:
      - "3000:3000"
    command: sh -c "export PATH=$$PATH:/app/node_modules/.bin && npm run dev"
    depends_on:
      - backend
    networks:
      - default

networks:
  default:
    driver: bridge

volumes:
  mysql_data:

Однако я не могу загрузить ни одного изображения из

image_background = models.ImageField(upload_to='articles_images/', blank=True, null=True)

несмотря на то, что до этого все работало отлично с SQLITE3. Я проверил разрешения на доступ к каталогу /media в контейнере, и все каталоги имеют разрешения на чтение, запись и выполнение.

Пожалуйста, помогите мне решить эту проблему. Большое спасибо

<

Это все мои /backend/blog/models.py

Я попробовал отладить разрешение моей папки /app/media

Вернуться на верх