gpt4 book ai didi

python - 找不到部署在docker+nginx+uwsgi下的flask应用程序的模块

转载 作者:行者123 更新时间:2023-12-01 02:38:17 25 4
gpt4 key购买 nike

我有一个用flask编写的项目,其结构如下:

-/
|- src
|- __init__.py
|- main.py
|- module_a
|- __init__.py
|- ...
|- ...
|- web
|- __init__.py
|- web.py
|- Dockerfile

文件main.py调用 web/web.py 中定义的入口函数,和web.py调用 module_a 中定义的业务功能。它可以与命令 python main.py 配合使用。 .

所以我打算部署在docker下,Dockerfile如下:

FROM tiangolo/uwsgi-nginx-flask:python3.6

COPY ./src/* /app/

在 Docker 中构建并运行 Web 应用程序,出现错误:

Traceback (most recent call last):
File "./main.py", line 1, in <module>
from web import run
File "./web.py", line 5, in <module>
import module_a
ModuleNotFoundError: No module named 'module_a'

为什么uwsgi找不到module_a ?我错过了什么吗?

最佳答案

问题出在你的 COPY 语句上。我用您的数据创建了一个示例

FROM alpine
COPY ./src/* /app/
RUN ls -alh /app
COPY ./src /app
RUN ls -alh /app

如果您构建,您将看到输出

Step 1/5 : FROM alpine
---> 7328f6f8b418
Step 2/5 : COPY ./src/* /app/
---> Using cache
---> ad9fbfdc161d
Step 3/5 : RUN ls -alh /app
---> Using cache
---> 4dcad7cf4fba
Step 4/5 : COPY ./src /app
---> d25b4dc34f82
Removing intermediate container 4bf0fc884332
Step 5/5 : RUN ls -alh /app
---> Running in 34401d92bf03
total 16
drwxr-xr-x 4 root root 4.0K Sep 1 16:46 .
drwxr-xr-x 26 root root 4.0K Sep 1 16:46 ..
-rw-rw-r-- 1 root root 0 Sep 1 16:44 __init__.py
-rw-rw-r-- 1 root root 0 Sep 1 16:44 main.py
drwxrwxr-x 2 root root 4.0K Sep 1 16:45 module_a
drwxrwxr-x 2 root root 4.0K Sep 1 16:45 web
-rw-rw-r-- 1 root root 0 Sep 1 16:45 web.py

当您使用./src/*时,它会将这些匹配的内容复制到/app。所以你将无法正确获取文件。所以你应该使用COPY ./src/app

关于python - 找不到部署在docker+nginx+uwsgi下的flask应用程序的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com