我正在尝试使用Flask中的超级基本hello世界连接到Docker容器,但是我无法使其工作,因此我可能做错了任何事情,感谢您的帮助。
这是我所做的步骤,这些步骤一直有效,直到连接到来宾的最后一步为止。
我在Flask中创建了一个基本的hello world应用。如果我在本地运行该应用程序,则curl
或从浏览器中都可以看到它正在打印问候世界。
# Contents of hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
然后从控制台
export FLASK_APP=hello.py
flask run
到目前为止,一切都很好。该应用程序正常运行,现在我想将其放入docker映像中。 我的Dockerfile:
FROM alpine:latest
RUN apk add python py-pip curl
RUN pip install flask
COPY . /app
WORKDIR /app
EXPOSE 5000
ENV FLASK_APP hello.py
我可以构建图像:
docker build --tag hello_world_test .
以交互模式运行它:
docker run -it hello_world_test
/app # flask run &
* 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)
/app # curl 127.0.0.1:5000
127.0.0.1 - - [25/Jan/2019 15:05:09] "GET / HTTP/1.1" 200 -
Hello, World!
有效!
现在,我希望能够从主机上看到Hello World。 所以我运行图像映射端口:
docker run -it -p 5000:5000 hello_world_test
#then inside the container I execute `flask_run`
然后从主机上检查它是否正在运行:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ca0a0a984118 hello_world_test "/bin/sh" 15 minutes ago Up 15 minutes 0.0.0.0:5000->5000/tcp fervent_yalow
我检查了访客的IP:
docker inspect fervent_yalow | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
我检查ping到172.17.0.2,它可以正常工作 但是,如果我尝试连接到172.17.0.2:5000,它只是说 无法访问该网站
我必须一步一步做错事,但是我不知道怎么办。在容器内,该应用程序正在运行,我可以卷曲,可以对其进行ping操作,但无法获取Hello World。
我在做什么错了?