【问题标题】:Strange behavior in a Flask app with Docker on AWS doing a POST使用 Docker on AWS 进行 POST 的 Flask 应用程序中的奇怪行为
【发布时间】:2019-01-29 16:15:19
【问题描述】:

我有一个在 AWS 上使用 docker 和 uwsgi 运行的 Flask 应用程序。我有一些端点,当我使用 Postman 或 Curl 对其中一个端点进行 POST 时,我在日志上看到响应状态代码 412,但在 Postman 或 Curl 上显示为 502。

我尝试在不使用 docker 但使用 uwsgi 的情况下在本地运行 Flask 应用程序,它按预期运行。

我需要 412 响应才能知道如何处理此状态代码。

【问题讨论】:

  • 您能否提供有关您的环境的更多详细信息?您是否在使用负载均衡器、API 网关等?听起来响应正在被 Web 服务器和请求者之间的某些东西改变。
  • 我想象过这样的事情,但是基础设施的人从本周开始就太忙了,到目前为止帮不了我。但是谢谢你的回答。

标签: amazon-web-services docker flask uwsgi


【解决方案1】:

如果烧瓶应用程序在您的本地机器上按预期工作,它可能与您的容器的端口路由设置方式有关。

除了您的烧瓶应用程序接收请求的端口之外,还有一个位于其中的 Docker 容器,有自己的端口。第一个是需要公开以接收请求的一组外部端口,还有另一组可以链接到外部端口并由您的应用程序使用的内部端口。

this answer here 中有详细的解释,但 TLDR 是:

使用docker run -it --expose 8008 -p 8008:8008 myContainer 运行您的容器 将允许使用--expose EXTERNALPORT 的外部暴露端口,并将使用-p INTERNALPORT:EXTERNALPORT 将内部容器端口绑定到外部容器端口。

最后,在运行烧瓶服务时,您需要确保其端口与内部暴露的容器端口对齐。使用我们之前列出的相同端口的示例是:

flask run --host=0.0.0.0 --port=8008

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 2018-11-09
    • 2023-03-03
    • 2016-11-02
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    相关资源
    最近更新 更多