我有一個基本的 Flask Web 應用程式,我想在 Docker 容器中設定它。以下是我的 Dockerfile 設定:
FROM python:3.8-alpine
WORKDIR /mydir
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
ENV FLASK_APP="app.py"
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "-p", "8080"]
構建了 docker 檔案
mydir % docker build -t geode:latest .
但是當我嘗試通過 Docker 運行 Web 應用程式時,會發生這種情況:
mydir % docker run -p 8080:8080 geode:latest
* Serving Flask app 'app.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: python -m flask run [OPTIONS]
Try 'python -m flask run --help' for help.
Error: While importing 'app', an ImportError was raised.
但是,我可以使用以下命令在本地運行 Web 應用程式
mydir % python3 -m flask run --host=0.0.0.0 -p 8080
所以我不確定為什么當我通過 docker 運行它時會收到“ImportError”,但當我自己運行命令時卻沒有。
uj5u.com熱心網友回復:
可能flask找不到匯入變數的源檔案,或者匯入變數的源檔案中不存在app呼叫的變數。app
查看此鏈接以了解如何啟動 flaks 應用程式。
如果變數或包含app變數的檔案的名稱與標準不同,那么您可以在FLASK_APP內部設定環境變數Dockerfile來告訴flask從哪里獲取它需要的內容。
ENV FLASK_APP=<PATH_TO_APP.PY>:<APP_VARIABLE_NAME>
uj5u.com熱心網友回復:
我不知道為什么,但重建 Docker 容器允許它正常運行......也許我在構建容器后更改的 Dockerfile 中有錯字?不確定,但我正在復制我用于另一個應用程式的結構 - 原來的作業有效,而這沒有。所以某處有一個錯字并且重建容器作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453618.html
