Django makemigrations с docker-compose не работает. Не удается найти модуль

Я пытаюсь запустить makemigrations с помощью "docker-compose run makemigrations" после добавления pillow в мой проект, но он выдает ошибку "ModuleNotFoundError: No module named 'PIL'". Я пытаюсь использовать pillow для сжатия загруженных изображений.

Pillow был добавлен в settings.py и requirements.txt. Я также попробовал пересобрать образ docker.

Также стоит отметить, что ошибка не появляется, когда я запускаю сервер с помощью "docker-compose up"

Ниже приведены фрагменты кода:

docker-compose.yml

version: "3.9"
   
services:
  db:
    image: postgres
    ports:
      - "5432"
    volumes:
      - ./data/db:/var/lib/postgresql/data
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
  createsuperuser:
    build: .
    profiles: ["createsuperuser"]
    command: python manage.py createsuperuser
    volumes:
      - .:/code
    ports:
      - "8001"
    depends_on:
      - db    
  makemigrations:
    build: .
    profiles: ["makemigrations"]
    command: python manage.py makemigrations
    volumes:
     - .:/code
    ports:
      - "8002"
    depends_on:
      - db
  migrate:
    build: .
    profiles: ["migrate"]
    command: python manage.py migrate
    volumes:
      - .:/code
    ports:
      - "8003"
    depends_on:
      - db

models.py

from PIL import Image
...
class PropertyPhoto(models.Model):
    property = models.ForeignKey(Property, on_delete=models.CASCADE, null=True, related_name="photos")
    photo = models.ImageField(upload_to=f"static/properties/{property}/photos/", null=True, default=None)

    def save(self, *args, **kwargs):
        instance = super(PropertyPhoto, self).save(*args, **kwargs)
        image = Image.open(instance.photo.path)
        image.save(instance.photo.path, quality=80, optimize=True)
        return instance 

Ошибка при выполнении makemigrations

Traceback (most recent call last):
  File "/code/manage.py", line 22, in <module>
    main()
  File "/code/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute
    django.setup()
  File "/usr/local/lib/python3.10/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.10/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python3.10/site-packages/django/apps/config.py", line 228, in create
    import_module(entry)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'PIL'

Dockerfile

# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Вернуться на верх