烧瓶正在容器内工作但不是当我向前移动时

noo*_*bie 5 python flask docker

我正在尝试:我正在尝试使用docker运行一个简单的烧瓶应用程序.使用网站作为参考.

我的dockerfile:

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY ./app /app
WORKDIR /app
RUN pip install -r "requirements.txt"
ENTRYPOINT ["python"]
CMD ["app.py"]
Run Code Online (Sandbox Code Playgroud)

Python文件:

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(port=5000, debug=True)
Run Code Online (Sandbox Code Playgroud)

requirements.txt:

Flask==1.0.2
Run Code Online (Sandbox Code Playgroud)

我在做什么:

  • 使用建筑图像 docker build -t simple-flask2 .
  • 然后,使用启动容器 docker run -p 5000:5000 simple-flask2
  • 当我localhost:5000什么都没有出现的时候.
  • 所以,我打开容器的终端使用docker exec -it 3be bash&然后做了curl localhost:5000.令我惊讶的是它在容器内部工作.

任何人都可以指出我错过了什么?我对此很陌生.TIA :)

Jan*_*raj 8

我猜它只host='127.0.0.1'在容器中的localhost(默认值)上运行.尝试使用所有接口(host='0.0.0.0'):

if __name__ == '__main__':
    app.run(port=5000, debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)


dmi*_*kov 5

尝试使用以下方法在每个界面上收听:

app.run(host='0.0.0.0', port=5000, debug=True)
Run Code Online (Sandbox Code Playgroud)

  • 我相信它默认监听 127.0.0.1(localhost),正如 Jan 所说。侦听 0.0.0.0 将允许您通过容器的网络访问它。 (2认同)