[英]Cannot find module of flask app deployed under docker+nginx+uwsgi
我有一個用燒瓶寫的項目,其結構如下:
-/
|- 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
命令可以正常工作。
因此,我計划將其部署在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'
為什么module_a
無法找到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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.