ModuleNotFoundError:Docker容器中没有带有Django的名为'companyname'的模块

时间:2019-10-21 12:55:10

标签: python django docker

尽管我的模块位于Dockerfile的文件夹中,但我却收到了有关名为“ companyname”的模块的错误(虚假名称是为了不透露该项目)。

这是我的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)

然后有一个文件位于我的Dockerfile的./companyname/settings/dev.py中-因此表面上它应该通过复制命令存在于我的Docker映像中。

但是当我跑步时:

docker run <image hash>

我得到:

ModuleNotFoundError: No module named 'companyname'

为什么manage.py无法找到我的模块?应该观察相同的目录结构,对吗?

1 个答案:

答案 0 :(得分:1)

COPY * ./不保留目录结构,而COPY . ./保留目录结构