簡體   English   中英

找不到在docker + nginx + uwsgi下部署的Flask應用程序的模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM