无法连接到Docker容器(无法访问该站点)

时间:2019-01-25 15:14:33

标签: docker flask

我正在尝试使用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。

我在做什么错了?

0 个答案:

没有答案