gpt4 book ai didi

docker - 运行 docker 容器时无法访问页面

转载 作者:行者123 更新时间:2023-12-02 20:40:23 27 4
gpt4 key购买 nike

我的目标是通过 Dockerfile 创建镜像,然后从该镜像运行容器。
这是 Dockerfile:

FROM python:3-alpine

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 2000

CMD ["python", "app.py"]
这是 app.py:
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
return "Hello, World!"

if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=5000)
我正在使用以下命令构建图像: docker build -t flask:v1 .并使用以下命令运行它: docker run -p 5000:2000 flask:v1运行它后,我在终端中得到了这个:
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 265-965-329
当我去 http://0.0.0.0:5000/ ,浏览器返回我:

This site can’t be reached


据我了解,在运行 -p 5000:2000 时, 5000 是主机端口,2000 是容器端口。
和命令 EXPOSEDockerfile正在暴露容器港口。
为什么我会收到 This site can’t be reached当我正确暴露容器端口并将其与主机端口 5000 绑定(bind)时?

最佳答案

因为您的应用程序在端口 5000 上运行app.run(debug=True, host="0.0.0.0", port=5000)所以你应该像这样将该端口映射到你的外部端口

docker run -p 5000:5000 flask:v1

As I understood, when running -p 5000:2000, 5000 is host port and 2000 is container port. And command EXPOSE in Dockerfile is exposing container port.


是的,但是由于您的应用程序在端口 5000 上运行,因此端口 2000 上没有运行任何内容。您也可以在 app.run 中更改该端口如果你想使用 2000 端口

关于docker - 运行 docker 容器时无法访问页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64607560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com