【问题标题】:Flask Docker Container IssuesFlask Docker 容器问题
【发布时间】:2021-06-01 04:28:41
【问题描述】:

我有几个问题希望有人能在这里回答。我意识到我有知识空白,我希望这里有人可以填补它,或者至少为我指明正确的方向。

我已经构建了一个 Flask API,我可以在 Ubuntu OS 上的 Docker 容器中运行它。为了创建 Swagger API 文档,我将其添加到我的 Flask 应用程序中:

from flask_swagger_ui import get_swaggerui_blueprint

我没有继续前进,而是停止了 Docker 并再次运行它,正如预期的那样,它导致“502 网关错误”。在检查 Docker 日志时,我注意到:

ModuleNotFoundError: No module named 'flask_swagger_ui'

我理解这个问题,因为我需要在我的 docker 中添加这个依赖项。我将以下代码添加到我的 “requirements.txt”文件:flask_swagger_ui==3.36.0。

但是这并没有改变任何东西,我仍然收到同样的错误。我尝试将模块直接添加到通过此代码创建的 Dockerfile 中,但这也不起作用:

RUN pip install flask_swagger_ui

执行其中一项或两项操作会导致 502 网关错误。我曾尝试将其他几个模块添加到我的应用程序中,例如 Pandas 和 Sklearn,但它们会导致相同的错误。如果没有收到 Bad Gateway,我将无法对我的应用程序进行任何更改。

为了找出问题所在,我删除了我所做的所有更改,并将其恢复到“requiements.txt”中唯一依赖项是 Flask 2.0.1 的位置。测试Docker运行正常后,在迷茫的状态下,我删除了“start.sh”、“Dockerfile”和“requirements.txt”并放入垃圾箱并重启了Docker。

令我困惑的是,Docker 运行良好!上面提到的所有文件都在垃圾桶里!由于此时我完全迷失了方向,所以我再次添加了所有依赖项以查看它这次是否有效,并遇到了相同的 502 错误,并且日志显示了相同的问题。

那么我的问题是:

  1. 如何向我的应用程序添加依赖项?

  2. 我的 Docker 容器在垃圾箱中的 3 个必需文件之后仍然运行到底是怎么回事?我停止并再次重新启动了 Docker,据我所知,它应该不起作用。

  3. 从我的目录中的 requirements.txt 文件中删除“Flask 2.0.1”并重新启动我的 Docker 根本不会影响我的 Docker 应用程序,它运行良好。发生了什么?

这是我的 Dockerfile:

FROM tiangolo/uwsgi-nginx-flask:python3.8-alpine3.7
RUN apk --update add bash nano
RUN pip install pandas flask_swagger_ui
ENV STATIC_URL /static
ENV STATIC_PATH /home/faraz/python_docker/TestApp/app/static
COPY ./requirements.txt /home/faraz/python_docker/TestApp/requirements.txt
RUN pip install -r requirements.txt

这是我的 requirements.txt:

Flask==2.0.1
flask_swagger_ui==3.36.0
pandas==1.2.4

最后,我的“start.sh”:

#!/bin/bash
app="docker.test"
docker build -t ${app} .
docker run -d -p 56733:80 \
  --name=${app} \
  -v $PWD:/app ${app}

我在构建 API 时发布了另一个问题,下面的链接会将您带到它:Method Not Allowed The method is not allowed for the requested URL. 405 Error

根据其中一位 cmets 的建议:这是 Github 存储库:

https://github.com/frazali32/Docker-Flask-API

【问题讨论】:

  • 您能分享您的 github 仓库,以便我们提供帮助
  • @Sreevardhan Reddy 谢谢你的建议。我已经编辑了问题并添加了一个存储库。请帮忙。

标签: python docker flask docker-compose


【解决方案1】:

我找到了问题的答案。正如我所怀疑的,这只不过是知识鸿沟。这个概念在下面的论坛中得到了精彩的解释:

Rebuild Docker container on file changes

基本上,在本地删除或更改某些内容对容器没有任何影响,除非您将其安装为卷或不重建。就我而言,我删除了第一次尝试创建的 Docker 映像,构建了另一个映像并重新启动了 Docker。现在可以了!

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 2015-11-29
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    相关资源
    最近更新 更多