Docker ModuleNotFoundError: Нет модуля с именем 'boto3'

Я пытаюсь сделать веб-приложение, используя django, и в файле views.py я добавил import boto3 .

он отлично работал, когда я пробовал его без docker, но теперь я получаю эту ошибку:

ModuleNotFoundError: No module named 'boto3'

вот мой dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN pip install boto3 -t .
COPY . /app/
ADD . /app
ENV PYTHONPATH /app
CMD [ "python", "/app/greet/views.py" ]

и это мой файл docker-compose.yml

version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes: 
      - .:/app
    ports: 
      - "8000:8000"

Ваша проблема заключается в разделе volumes вашего docker-compose.yml. В своем Dockerfile вы приложили много усилий для установки /app, включая установку boto3 в этот каталог...

... а затем вы идете и просто монтируете свой локальный каталог поверх него, эффективно скрывая все, что содержится в /app в контейнере image.

Решением является либо:

  • Не устанавливайте ничего на вершине /app. Избавьтесь от volumes секции вашей конфигурации и просто перестраивайте образ, когда вам нужно обновить код. Или...

    .
  • Вместо того, чтобы устанавливать boto3 в /app, просто включите его в раздел requirements.txt и установите его вместе с другими зависимостями. Теперь установка чего-либо на /app не будет скрывать boto3.

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