Flask + Gunicorn + Docker - 没有名为 api 的模块

Flask + Gunicorn + Docker - no module named api

我尝试 运行 docker 中的 gunicorn 烧瓶 项目结构: here

Docker 配置:

# syntax=docker/dockerfile:1
FROM python:3.9
WORKDIR /api

COPY ./requirements.txt ./
COPY ./api ./
RUN pip install -r ./requirements.txt

ENV FLASK_APP=.
ENV FLASK_ENV=development
ENV DATABASE_URL=postgresql://fs_integr:fs_integr@db:5432/fs_integr


# CMD [ "flask", "run", "--host=0.0.0.0", "--port=5000"]

# CMD "export FLASK_APP=/api/__init__.py"
CMD ["gunicorn", "-b", ":5000", "-e", "FLASK_APP=.", "wsgi:app"]

错误:

File "/api/wsgi.py", line 1, in <module>
api_1  |     from api import app

WSGI 文件:

from api import app

if __name__ == "__main__":
    app.run()

我知道什么是真相,但我已经浪费了几个小时(

gunicorn 可以理解在哪里可以找到 api 导入到 WSGI 文件中的模块,如果我们 运行 从外部文件夹遵循文件的名称约定。所以 dockerfile 的 CMD 命令应该是这样的:

 CMD cd .. && gunicorn -b :5000 api.wsgi:app

cd .. - 从api文件夹中退出

&& - 一个接一个执行bash命令

gunicorn -b :5000 api.wsgi:app - 运行 gunicorn,绑定端口,set_path:run_flask_app