尽管我的模块位于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无法找到我的模块?应该观察相同的目录结构,对吗?
答案 0 :(得分:1)
COPY * ./
不保留目录结构,而COPY . ./
保留目录结构