【发布时间】:2020-02-08 06:53:47
【问题描述】:
我是 Docker 和 Python 的新手。我使用 Flask 创建了一个简单的 Python 应用程序。我想在 Docker 容器中运行它。Docker 容器显示它正在运行。但是当我访问 url 时,我得到了 localhost没有发送任何数据。
docker container ls 显示我的容器在 localhost 和端口号 8081 上运行
app.py
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route("/hello", methods=["GET","POST"])
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run(debug=True, port=8081,host='0.0.0.0')
Dockerfile
FROM python:2.7
ADD app.py /
RUN pip install flask
EXPOSE 8081
CMD ["flask", "run", "--host=0.0.0.0"]
CMD ["python", "app.py", "--host=0.0.0.0"]
当我在本地环境中运行相同的 app.py 时,我会在 localhost url 上获得所需的数据。有人可以指导我正确的方向吗?
图像被标记为dockerimage:latest,我运行它:
docker run -it -p 8081:8081 dockerimage
并检查带有docker container ls 的容器显示:
0.0.0.0:8081->8081/tcp
【问题讨论】:
-
你是如何访问这个烧瓶端点的?你是如何运行容器的?
-
运行容器时需要转发端口。例如
docker run -p 8081:8081 mycontainer -
为什么会有三个运行命令?
-
1.构建命令:docker build -t dockerimage:latest。 -f Dockerfile 2.运行命令:docker run -it -p 8081:8081 dockerimage 3.Docker容器ls返回0.0.0.0:8081->8081/tcp
-
当你访问那个端点时,你在做什么?您是否通过
http://localhost:8081/hello连接到它?
标签: python docker flask dockerfile