Невозможно импортировать Django в контейнер docker, установленный с miniconda

Я следовал по сути той же настройке, которая безупречно работает в другом проекте, но здесь она работает не так, как ожидалось.

У меня есть этот файл docker:

FROM continuumio/miniconda3
ENV PYTHONUNBUFFERED=1
RUN mkdir /static
RUN apt update && apt install -y build-essential time libgraphviz-dev graphviz
RUN conda create -n env -c conda-forge python==3.10 django==4 pip
SHELL ["conda", "run", "-n", "env", "/bin/bash", "-c"]
COPY backend/requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY ./backend /backend
WORKDIR /backend/

И этот файл docker-compose:

version: "3.3"
   
services:
  backend:
    container_name: backend
    restart: always
    user: ${UID}
    build: 
      context: .
      dockerfile: dockerfiles/Dockerfile-backend
    env_file:
        - ./.env
    command: ./manage.py runserver --database docker
    volumes:
      - ./backend/:/backend/
      - ${STATIC}:/static/
    ports:
      - "8000:8000"
    depends_on:
      - db
  
  db:
    container_name: db
    restart: always
    image: postgres:13.4
    volumes:
      - ${DB}:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

Итак, все выглядит довольно просто. Я вижу, что django установлен, а также pip используется для установки других требований, однако, когда я запускаю контейнер с помощью docker-compose, он возвращает, что django не может быть импортирован. Я пытался добавить команду SHELL для указания окружения conda (я пробовал базовое окружение, а также env), но это не работает. Может ли кто-нибудь заметить здесь ошибку и указать, как ее исправить?

Вот сообщение об ошибке:

ImportError: Не удалось импортировать Django. Вы уверены, что он установлен и доступен в вашей переменной окружения PYTHONPATH? Забыли ли вы активировать виртуальное окружение?

Я также пытался запустить его без оператора USER, но ошибка та же. И я изменил команду в файле docker на conda run -n base -c ..., тоже безрезультатно. Раньше мне это также не требовалось. Это весьма озадачивает, потому что контейнер continuumio создан для этой цели.

Следующая конфигурация заставила его работать.

Dockerfile:

FROM continuumio/miniconda3
ENV PYTHONUNBUFFERED=1
RUN mkdir /static
SHELL ["/bin/bash", "-c"]
RUN apt update && apt install -y build-essential time libgraphviz-dev graphviz
RUN conda create -n env -c conda-forge python==3.10 django==4 pip && conda init bash $$ source ~/.bashrc
COPY backend/requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY ./backend /backend
WORKDIR /backend/

docker-compose file:

version: "3.3"
   
services:
  backend:
    container_name: backend
    restart: always
    user: ${UID}
    build: 
      context: .
      dockerfile: dockerfiles/Dockerfile-backend
    env_file:
        - ./.env
    command: ./manage.py runserver
    volumes:
      - ./backend/:/backend/
      - ${STATIC}:/static/
    ports:
      - "8000:8000"
    depends_on:
      - db
  
  db:
    container_name: db
    restart: always
    image: postgres:13.4
    volumes:
      - ${DB}:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
Вернуться на верх