【问题标题】:Run docker container on localhost [duplicate]在本地主机上运行 docker 容器 [重复]
【发布时间】:2021-03-12 07:18:44
【问题描述】:

下面是我的 DockerFile:

FROM python:3.8.5
COPY . /usr/app/
EXPOSE 5500
WORKDIR /usr/app/
RUN pip install -r requirements.txt
CMD python app.py

我正在使用命令“docker run -p 5500:5500 api_name”运行此容器,之后我在 cmd 中收到以下消息: C:\Users\win10\Documents\ML 文件>docker run -p 5500:5500 api_name

  • 服务 Flask 应用“app”(延迟加载)
  • 环境:生产 警告:这是一个开发服务器。不要在生产部署中使用它。 请改用生产 WSGI 服务器。
  • 调试模式:开启
  • http://127.0.0.1:5000/ 上运行(按 CTRL+C 退出)
  • 使用 stat 重启
  • 调试器已激活!
  • 调试器 PIN:xxx-xxx-xxx

我尝试访问 http://127.0.0.1:5000/http://127.0.0.1:5500/,但“无法访问此站点”。 PS:我正在为 windows 使用 docker 桌面

【问题讨论】:

  • 您的端口映射是将主机上的端口 5500 映射到容器上的 5500,但是您的容器日志说它正在侦听 5000。您映射到容器的端口 5000:-p 5500:5000 然后它将可以访问在本地主机上:5500
  • (您还应该调整EXPOSE 的值以反映容器化应用正在侦听的端口)

标签: docker flask kubernetes deployment


【解决方案1】:

如果不检查您的app.py 文件,很难确定。 但是,您的应用很可能没有在正确的端口或正确的绑定主机上侦听。默认情况下,flask 应用监听127.0.0.1,当在 docker 容器中运行时,你需要监听 0.0.0.0,使用 app.run(host='0.0.0.0')

这是一个工作示例

Dockerfile

FROM python:3.8.5
COPY . /usr/app/
EXPOSE 5000
WORKDIR /usr/app/
RUN pip install flask
CMD python app.py

app.py

from flask import Flask
app = Flask(__name__)

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

if __name__ == "__main__":
    app.run(host='0.0.0.0')

构建并运行

$ docker build -t temp
$ docker run -p 5000:5000 temp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2022-01-07
    • 2014-12-20
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多