ModuleNotFoundError: нет модуля с именем «companyname», в котором Django находится в докере - PullRequest
0 голосов
/ 21 октября 2019

Я получаю сообщение об ошибке моего модуля с именем "companyname" (поддельное имя, чтобы не раскрывать этот проект), несмотря на тот факт, что он находится в папке с моим Dockerfile.

Вот мой Dockerfile:

FROM python:3.7
RUN apt-get update && apt-get upgrade -y && apt-get autoremove && apt-get autoclean
RUN apt-get install -y \
    libffi-dev \
    libssl-dev \
    default-libmysqlclient-dev \
    libxml2-dev \
    libxslt-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zlib1g-dev \
    net-tools \
    vim
COPY * ./
RUN pip install -U pipenv
RUN pipenv install --system
EXPOSE 8000
STOPSIGNAL SIGINT
ENTRYPOINT ["python3.7", "manage.py"]
CMD ["runserver", "0.0.0.0:8000"]

Вот мой manage.py:

#!/usr/bin/env python
import os
import sys
import pymysql
pymysql.install_as_MySQLdb()

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "companyname.settings.dev")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

И еще есть файл, который находится ./companyname/settings/dev.py в моем Dockerfile - так что якобы он должен существовать в моем образе Docker изкоманда копирования.

Однако, когда я запускаю:

docker run <image hash>

, я получаю:

ModuleNotFoundError: No module named 'companyname'

Почему не удается manage.py найти мой модуль? Должна соблюдаться та же структура каталогов, правильно?

1 Ответ

1 голос
/ 21 октября 2019

COPY * ./ не сохраняет структуру каталогов, тогда как COPY . ./ делает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...