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.