一尘不染

如何在现有的dockerfile中运行Flask应用程序?我如何让flask运行其他应用程序?

docker

我有一个看起来像这样的docker文件:

FROM python:3.7

WORKDIR /var/<some_project>

ENV PYTHONPATH "${PYTHONPATH}:/var/<some_project>"
ENV FLASK_APP "app/prometheus/__init__.py"

COPY app ./app
COPY sources ./sources
COPY *.py ./
COPY requirements.txt ./

RUN pip3 install -r requirements.txt

ENTRYPOINT ["python", "sources/passport/main.py"]

我需要在某些时候运行flask run来查看我在flask中创建的端点(在文件夹app下)。我该怎么做才能将此添加到此dockerfile?

我认为我还必须让flask运行其他main应用程序,因为flask公开了其他应用程序正在收集的数据。我如何让flask调用其他应用程序并使其在后台运行?


阅读 293

收藏
2020-06-17

共1个答案

一尘不染

我想你不想要那个入口点(也许你确实想要它,但是除非它要称呼烧瓶本身,否则我想这是一个错误)。

我会这样重写文件:

FROM python:3.7

WORKDIR /var/<some_project>

ENV PYTHONPATH="${PYTHONPATH}:/var/<some_project>"
ENV FLASK_APP="app/prometheus/__init__.py"

COPY requirements.txt ./

RUN pip3 install -r requirements.txt

COPY app ./app
COPY sources ./sources
COPY *.py ./

CMD flask run --host=0.0.0.0

您将需要替换/var/<some_project>为实际名称,并且需要设置FLASK_APP一个绝对路径。

既然已经FLASK_APP设置,您只需要CMD flask run运行该应用程序即可。

我还更改了文件副本和pip安装的顺序,以帮助构建缓存。

2020-06-17