相关疑难解决方法(0)

无法从主机连接到Docker上的Flask应用程序

我已经设置了一个docker ubuntu 14.04图像,我正在使用以下命令运行它:

docker run -d -p 5000:5000 ari/python3-flask

Dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y python3 python3-pip
ADD . /var/my_app
RUN pip3 install -r /var/my_app/requirements.txt
EXPOSE 5000
CMD ["python3", "/var/my_app/runserver.py"]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试卷曲地址(localhost:5000)或在浏览器中访问它,我会收到连接失败错误.

容器的docker日志显示:

Running on http://127.0.0.1:5000/

Restarting with reloader
Run Code Online (Sandbox Code Playgroud)

我的docker设置和/或配置有什么问题或者可能有什么问题?谢谢.

ubuntu flask docker

15
推荐指数
1
解决办法
8167
查看次数

如何在Docker容器中运行Python Flask

我正在尝试在docker容器中运行Python Flask Web服务器,但我无法从外部连接到Flask服务器.

我做了什么:

我建立 /temp/HelloFlask.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

我启动了docker容器,容器端口5000映射到主机端口5000,并且〜/ temp安装到/ temp

docker run -it -p 5000:5000 -v ~/temp:/temp --name tf gcr.io/tensorflow/tensorflow:latest-devel
Run Code Online (Sandbox Code Playgroud)

在运行的docker容器内,我安装了Flask并运行 HelloFlask.py

cd /temp
pip install Flask
python HelloFlask.py &
Run Code Online (Sandbox Code Playgroud)

我验证了服务器在容器中是可访问的

[root@de8b6996b540:/temp# curl localhost:5000
127.0.0.1 - - [22/Sep/2016 17:41:48] "GET / HTTP/1.1" 200 -
Hello World!
Run Code Online (Sandbox Code Playgroud)

我正在使用Docker版本1.12.1(版本:12133),它暴露了localhost上的容器端口,因此我应该可以localhost:5000在我的Mac 上访问容器外部,但我无法连接.

我测试确保Docker通过运行ngetx容器正确地将容器端口绑定到localhost,如docker for mac quickstart中所述,我可以通过localhost从容器访问端口就好了.

python flask docker

9
推荐指数
1
解决办法
8126
查看次数

使用 ssl 使用 Flask 应用程序启动 docker

我有一个带有 SSL 授权的烧瓶应用程序。这是我的run.py:

#!flask/bin/python
from app import app
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.load_cert_chain('sertnew/se-emulator.crt', 'sertnew/se-emulator.key')
app.run(debug=True, host='127.0.0.1', port=5000, ssl_context=ctx)
Run Code Online (Sandbox Code Playgroud)

在我的机器上,我简单地运行它 python run.py 然后我在 chrome 中打开https://localhost:5000并且它可以工作(有一条非安全连接的消息,但对我来说没问题)

现在我试图让它在 Docker 容器中工作。我有一个这样的 Dockerfile:

FROM python:3.5-slim
RUN apt-get update && apt-get install -y python3-pip
COPY . /storage-emulator
WORKDIR /storage-emulator
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["run.py"]
Run Code Online (Sandbox Code Playgroud)

并尝试以不同的方式运行它。我可以看到“在https://127.0.0.1:5000/ 上运行(按 CTRL+C 退出)”消息,但无法在浏览器中打开页面。我究竟做错了什么?

python ssl flask docker

7
推荐指数
1
解决办法
4501
查看次数

docker run 中的烧瓶主机地址

我想在 Docker 中运行一个 Flask 应用程序,使用 Flask 简单的 http 服务器。(不是枪炮)

我遇到了主机设置问题。

在flask app.py中,它应该可以作为官方教程使用,但它不起作用:

if __name__ == '__main__':
    app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

所以我在回答类似帖子后做了它,它突然起作用了!:

/sf/answers/3011050521/

$> flask run --host=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么第一种方法不起作用,但第二种方法有效?

python flask python-3.x docker

7
推荐指数
1
解决办法
852
查看次数

在 docker 容器上运行时无法连接到烧瓶

我正在尝试将一个简单的 Flask 应用程序移动到 docker,但我无法弄清楚为什么无法从浏览器访问该应用程序。

docker-compose 文件

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
      - .:/app
    environment:
      FLASK_APP: api
      FLASK_ENV: development

  redis:
    image: "redis:alpine"
Run Code Online (Sandbox Code Playgroud)

文件

FROM python:3.7

ADD . /app
WORKDIR /app

RUN pip install -r requirements.txt
CMD ["flask", "run"]

Run Code Online (Sandbox Code Playgroud)

__init__py:

def create_app(test_config=None):
  app = Flask(__name__, instance_relative_config=True)
  ...

  return app
Run Code Online (Sandbox Code Playgroud)

结果来自 docker-compose up --build

web_1    |  * Serving Flask app "api" (lazy loading)
web_1    |  * Environment: development
web_1    |  * Debug mode: on
web_1    |  * Running …
Run Code Online (Sandbox Code Playgroud)

python flask docker

6
推荐指数
1
解决办法
3570
查看次数

无法访问Docker容器中的Flask应用

我无法向docker容器中的flask应用请求。它没有响应。

有我的烧瓶应用程序文件:

import json
from flask import Flask, jsonify
from flask import request

from trained_model import predict
app = Flask(__name__)

@app.route("/", methods=['POST'])
def main():
    res = []

    for obj in request.json:
        item = str(obj['item'])
        print item
        predicted = predict(item)
        print predicted
    res.append({'item': item, 'correct': predicted})

    return json.dumps({'results': res})

if __name__ == "__main__":
    app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

有我的dockerfile:

FROM tensorflow/tensorflow

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Bundle app source
COPY . /usr/src/app

RUN sh docker_install.sh

EXPOSE 5000
ENTRYPOINT ["python"] …
Run Code Online (Sandbox Code Playgroud)

python flask docker

5
推荐指数
3
解决办法
3856
查看次数

Docker烧瓶不能连接

我正在尝试做 http://containertutorials.com/docker-compose/flask-simple-app.html

我已经逐字复制了教程,除了我改变了

From flask import Flask
Run Code Online (Sandbox Code Playgroud)

from flask import Flask
Run Code Online (Sandbox Code Playgroud)

我可以很好地建造它.当我从命令行运行docker ps时,我可以启动它并获得以下内容

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                    NAMES
291c8dfe5ddb        whatever:latest     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp   sick_wozniak
Run Code Online (Sandbox Code Playgroud)

我在OSX上构建它

我尝试了以下内容

  1. 看看这篇文章在docker - 服务器连接问题中部署一个最小烧瓶应用程序
  2. 运行$ python app.py以确保它在没有docker的情况下工作
  3. 为该项目创建django项目和dockerfile.然后构建,运行和访问.

因此我确信docker正在工作,并且烧瓶正在彼此独立工作,但我不能让它们一起工作.

python macos flask docker

3
推荐指数
1
解决办法
1387
查看次数

Flask 应用程序端口拒绝连接 ec2

我有一个 Flask 应用程序,我将其部署在 EC2 实例上。该应用程序启动得很好:

ubuntu@ip-something:~/webservices$ python service/texting_service.py 
 * Serving Flask app "texting_service" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 146-396-474

Run Code Online (Sandbox Code Playgroud)

当我ssh进入此 EC2 实例并使用 调用该服务时localhost,它会返回预期的响应。但是,当我尝试使用实例的公共 IP 地址从 EC2 实例外部调用此服务时,我看到以下错误:

curl: (7) Failed to connect to …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 flask aws-security-group

1
推荐指数
1
解决办法
2181
查看次数

docker python Flask 得到“你想继续吗”然后“执行器失败”

在 docker 20.10.2(版本 2291f61)中尝试一个简单的python Flask Web 应用程序。

\n

执行以下操作:docker build -t hello-world .开始时没问题(请参见下文),但结束时为:

\n
#6 2.866 After this operation, 305 MB of additional disk space will be used.\n#6 2.866 Do you want to continue? [Y/n] Abort.\n------\nexecutor failed running [/bin/sh -c apt-get install python3-pip]: exit code: 1\n
Run Code Online (Sandbox Code Playgroud)\n

我需要以某种方式回答“是”吗?还有其他解决方法吗?

\n

编辑1: $ docker build -t Flask-tutorial:latest 。# 做同样的事情。

\n

编辑 2:使用 @tentative 的 install -y 想法会更进一步

\n
 > [4/6] RUN apt-get install -y flask:\n#7 0.742 Reading …
Run Code Online (Sandbox Code Playgroud)

python ubuntu flask docker

1
推荐指数
1
解决办法
5048
查看次数

如何将烧瓶端口从容器发布到主机

我想在本地运行一个 dockerized Flask 服务器并访问我在其中定义的任何路由。设置重现我的问题:

应用程序

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

Run Code Online (Sandbox Code Playgroud)

文件

from python:3.7-alpine

COPY app.py app.py

RUN pip install flask

CMD [ "flask", "run" ]
Run Code Online (Sandbox Code Playgroud)

构建这个容器工作正常。按照文档一些深入的示例,运行它docker run -p 5000:5000 flask应该可以解决问题。它启动容器并且看起来不错:

* Environment: production   
  WARNING: Do not use the development server in a production environment.  
  Use a production WSGI server instead.  
* Debug mode: off  
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)

docker ps让我发现,端口映射也似乎工作: …

python flask docker alpine-linux

0
推荐指数
1
解决办法
2495
查看次数

Docker容器服务器不发送数据

我刚刚开始学习 docker,我正在尝试在容器中运行一个非常简单的 Flask 服务器。每当我运行它时,它都工作得很好。但是,当我访问该网站时,chrome 会显示以下内容:

\n
This page isn\xe2\x80\x99t working\n127.0.0.1 didn\xe2\x80\x99t send any data.\nERR_EMPTY_RESPONSE\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的代码:

\n
from flask import Flask\n\napp = Flask(__name__)\n\n@app.route("/")\ndef index():\n    return "Hello World"\n\nif __name__ == "__main__":\n    app.run(debug=True)\n
Run Code Online (Sandbox Code Playgroud)\n

Docker 文件:

\n
FROM python:3\n\nRUN mkdir /test\nWORKDIR /test\nRUN pip3 install flask\n\nCOPY . .\nEXPOSE 5000\n\ncmd ["python3", "application.py"]\n
Run Code Online (Sandbox Code Playgroud)\n

以及我用来构建映像和运行容器的命令:

\n
docker build . -t test\ndocker start -p 5000:5000 test\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以帮我解决这个问题吗?

\n

python flask docker

0
推荐指数
1
解决办法
1208
查看次数