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

→ Ссылка