繁体   English   中英

如果更改了端口,则不会加载容器化烧瓶应用程序

[英]Containerized flask app does not load if port is Changed

我创建了一个简单的flask应用程序,该应用程序在该应用程序的框架上运行,默认情况下,该应用程序在端口5000上运行:

# Create the application instance
app = connexion.App(__name__, specification_dir="./")

# read the swagger.yml file to configure the endpoints
app.add_api("swagger.yml")




# Create a URL route in our application for "/"
@app.route("/")
def home():
    """
    This function just responds to the browser URL
    localhost:5000/

    :return:        the rendered template "home.html"
    """
    return render_template("home.html")


if __name__ == "__main__":
    app.run(debug=True)

在Dockerfile中,我公开了相同的端口:

RUN python3 -m pip install -r requirements.txt

COPY . /app

EXPOSE 5000

然后我将容器运行为:

sudo docker run -d -p 5000:5000 my_app:latest

一旦容器装满,我就可以在以下位置访问应用程序:

http://localhost:5000

现在,我尝试更改为端口5100,为此,我正在更改:

a)在Dockerfile中:

COPY . /app

EXPOSE 5100
...

b)运行容器时:

sudo docker run -d -p 5100:5100 my_app:latest

但是当我尝试访问时: http:// localhost:5100 /

该应用未在此处运行

当我执行Docker ps时 ,显示如下:

在此处输入图片说明

编辑:

我尝试更改flask应用程序:

app.run(host='0.0.0.0', port=5100)

仍然无法正常工作,这是docker ps的屏幕截图:

在此处输入图片说明

不知道错误是否是因为开始时仍然显示5000:

5000/tcp, 0.0.0.0:5100->5100/tcp   romantic_fermi

这就是我从码头工人日志中得到的...

 * Serving Flask app "server" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

从技术上讲,您可以更改分配给Flask对象的默认端口,但是仅更改docker映射更为简单。

当您运行这样的命令时:

$ docker run -d -p 5100:5100 my_app:latest

您要说的是要将端口从容器内部(右侧)转发到主机(左侧)。

# Left side is your host machine
# Right side is inside of the container
5100:5100

因此,您可以将run更新为映射到容器内部的5000

$ docker run -d -p 5100:5000 my_app:latest

然后,您将可以通过http:// localhost:5100访问


PS:如果您以前从未使用过docker-compose ,我强烈建议您在解决此问题后进行设置。 总的来说,它将使您的生活更轻松。

在您的.py脚本上,您需要使用以下命令设置5100端口:

app.run(debug=True,host='0.0.0.0', port=5100)

您所做的所有其他操作都是正确的!

如果您的python仍在侦听端口5000,则可能是旧版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM