ModuleNotFoundError: No module named в докере
Не могу никак разобраться с докером, добавил новую библиотеку в requirements.txt
Проблема в том что докер не устанавливает её и просто падает с ошибкой
ModuleNotFoundError: No module named 'pydantic'
Запускаю с помощью команды sudo docker-compose up
Вот что в Docerfile
FROM python:latest
WORKDIR /src
COPY requirements.txt /src
RUN pip install -r requirements.txt
COPY . /src
CMD python3 /src/app.py
Вот что в docker-compose
version: '3.1'
services:
db:
container_name: database
image: sameersbn/postgresql:10-2
env_file:
- ".env"
environment:
DB_PASS: $DB_PASS
restart: always
ports:
- 5432:5432
networks:
- botnet
volumes:
- ./postgres:/var/lib/postgresql
tgbot:
container_name: bot
build:
context: .
command: python app.py
networks:
- botnet
restart: always
env_file:
- ".env"
volumes:
- .:/src
depends_on:
- db
networks:
botnet:
driver: bridge
database | Initializing datadir...
database | Initializing certdir...
database | Initializing logdir...
database | Initializing rundir...
database | Setting resolv.conf ACLs...
database | Initializing database...
bot | Traceback (most recent call last):
bot | File "/src/app.py", line 6, in <module>
bot | from integrations.telegraph import FileUploader, TelegraphService
bot | File "/src/integrations/telegraph/__init__.py", line 1, in <module>
bot | from .abstract import FileUploader
bot | File "/src/integrations/telegraph/abstract.py", line 5, in <module>
bot | from integrations.telegraph.types import UploadedFile
bot | File "/src/integrations/telegraph/types.py", line 3, in <module>
bot | from pydantic import Field, BaseModel, validator
bot | ModuleNotFoundError: No module named 'pydantic'
database | Configuring hot standby...
database | ‣ Setting postgresql.conf parameter: wal_level = 'hot_standby'
database | ‣ Setting postgresql.conf parameter: max_wal_senders = '16'
database | ‣ Setting postgresql.conf parameter: checkpoint_segments = '8'
database | ‣ Setting postgresql.conf parameter: wal_keep_segments = '32'
database | ‣ Setting postgresql.conf parameter: hot_standby = 'on'
database | ‣ Setting postgresql.conf parameter: data_directory = '/var/lib/postgresql/10/main'
database | ‣ Setting postgresql.conf parameter: log_directory = '/var/log/postgresql'
database | ‣ Setting postgresql.conf parameter: log_filename = 'postgresql-10-main.log'
database | ‣ Setting postgresql.conf parameter: ssl = 'off'
database | Creating database user: soldatov
database | Creating database: soldatov...
bot | Traceback (most recent call last):
bot | File "/src/app.py", line 6, in <module>
bot | from integrations.telegraph import FileUploader, TelegraphService
bot | File "/src/integrations/telegraph/__init__.py", line 1, in <module>
bot | from .abstract import FileUploader
bot | File "/src/integrations/telegraph/abstract.py", line 5, in <module>
bot | from integrations.telegraph.types import UploadedFile
bot | File "/src/integrations/telegraph/types.py", line 3, in <module>
bot | from pydantic import Field, BaseModel, validator
bot | ModuleNotFoundError: No module named 'pydantic'
database | ‣ Granting access to soldatov user...
Ответы (1 шт):
Автор решения: Aleksey Vaganov
→ Ссылка
В Dockerfile у вас текущая папка с хоста копируется в /src, а затем опять же папка с хоста . монтируется в ту же точку /src и замещает содержимое.
Уберите из docker-compose.yml строки:
volumes:
- .:/src
И пересоберите проект командой docker-compose up -d --build