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
我尝试 运行 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