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
.