Flask 服务器上出现“连接已重置”错误

Man*_*anu 5 python flask docker

我遇到了 docker 问题,我按照官方 docker 教程部署了一个 Web 应用程序(幸运的是 python/flask ),但是当我尝试部署我的应用程序时,当我到达连接部分时,它失败并回复“连接”已重置”

\n\n

代码

\n\n
\n\n
    import json\n    import threading\n    import thread\n    import io\n\n    from flask import Flask, render_template, request\n    from flask_socketio import SocketIO\n\n    # Global variables\n    app = Flask(__name__)\n\n    lock = threading.Semaphore(0)\n    IOCReplay.lock = lock\n\n    async_mode = None\n    socketio = SocketIO(app)\n    IOCReplay.socketio = socketio\n\n\n    @app.route("/")\n    def root():\n        return render_template(\'index.html\')\n\n    @app.route("/dependencies")\n    def getDependencies():\n        data = \'\'\n        with open(\'./dependencies.json\') as data_file:\n            data = json.load(data_file)\n\n        return json.dumps(data)\n\n    if __name__ == "__main__":\n        socketio.run(app, port=5000)\n
Run Code Online (Sandbox Code Playgroud)\n\n
    docker run -d -P guitest:1\n    6d95689601b8(...)\n\n    docker ps\n    CONTAINER ID        IMAGE               COMMAND              \n    6d95689601b8        guitest:1           "python test.py"   \n\n    CREATED             STATUS              PORTS                       NAMES\n    4 seconds ago       Up 2 seconds        0.0.0.0:32771->5000/tcp     loving_boyd\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

Dockerfile 没问题。

\n\n

问题

\n\n

因此,当我登录 0.0.0.0:32771 时,它显示“连接已重置”

\n\n

我从 docker FAQ 中看到,要解决这个问题,我必须“更改 [my] localhost 上的 service\xe2\x80\x99s 配置,以便该服务接受来自所有 IP 的请求”

\n

Man*_*anu 4

好吧,我已经解决了所有问题!感谢@n2o

问题是 socketio.run(app) 的参数不正确

以前的:

    from flask import Flask, render_template, request
    from flask_socketio import SocketIO

    # Code here #

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

固定的:

    import os
    from flask import Flask, render_template, request
    from flask_socketio import SocketIO

    # code here #

    if __name__ == "__main__":
        port = int(os.environ.get('PORT', 5000))
        socketio.run(app, host='0.0.0.0', port=port)
Run Code Online (Sandbox Code Playgroud)