1

我有以下项目结构

twoFlasks/
├── app.py
├── common/
│   ├── file1.py        
│   ├── file2.py       
│   └── file3.py    
├── Dockerfile
├── requirements.txt       
├── bot1/   
│   │        
│   ├── routes/
│   │   └── bot1_routes.py
└── bot2/
    └── routes/
        └── bot2_routes.py

以及以下 Dockerfile:

FROM python:3.8

WORKDIR /project

COPY requirements.txt .
COPY app.py .

RUN pip3 install -r requirements.txt

COPY bot1/ .
COPY bot2/ .
COPY common/ .

EXPOSE 5000 3000

CMD ["python", "./app.py"]

映像已成功构建,但是当我要运行容器时,我在 app.py 文件的日志中收到以下错误消息

Traceback (most recent call last):
  File "./app.py", line 9, in <module>
    from bot2.routes import bot2_routes
ModuleNotFoundError: No module named 'bot2'

它在本地工作,但不能在 Docker 容器中工作,我在这里有点不知所措。如果有人知道可能是什么问题,我将不胜感激!

4

2 回答 2

0

因此,解决我的问题的是 Dockerfile 的更改。

COPY bot1/ ./bot1
COPY bot2/ .bot2
COPY common/ ./common

而不是仅仅将文件夹复制到 .

于 2020-09-10T12:09:57.287 回答
0

如果您使用的是 Python <3.3,那么您需要__init__.py在包根目录中有一个文件来帮助 Python 构建命名空间:Python - 未找到模块

于 2020-09-08T15:03:50.030 回答