【问题标题】:Docker image not running on host 8050Docker 映像未在主机 8050 上运行
【发布时间】:2021-04-28 08:51:53
【问题描述】:

我正在尝试自学如何在 AWS 上部署 dash 应用程序。

我在我的 Mac 上创建了一个文件夹“DashboardImage”,其中包含一个 Dockerfile、README.md、requirements.txt 和一个包含我的 python dash 应用程序“dashboard.py”的应用程序文件夹。

我的 Dockerfile 如下所示:

我进入 DashboardImage 文件夹并运行

docker built -t conjoint_dashboard .

它构建成功,如果我运行 docker images,我可以看到图像的详细信息。

当我尝试时

docker run conjoint_dashboard

终端告诉我 Dash 正在 http://0.0.0.0:8050/ 上运行,但它没有连接。

我不明白为什么。

【问题讨论】:

    标签: python docker plotly-dash


    【解决方案1】:

    根据您的端口更新它,例如如果你的应用暴露了端口8050 那么:

    docker run -p 8050:8050 conjoint_dashboard 其中-p = publish first one is the HOST port, and the second is the CONTAINER port.

    你也可以更新你的 dockerfile:

    
    FROM: continuumio/minicoda3
    ...
    
    EXPOSE 8080/tcp
    
    ...
    

    EXPOSE 指令实际上并不是publish 端口。它充当构建映像的人和运行容器的人之间的一种文档类型,关于打算发布哪些端口。

    要在运行容器时实际发布端口,请使用 docker run 上的-p 标志来发布和映射一个或多个端口,或者使用-P 标志来发布所有暴露的端口并将它们映射到高位端口.

    默认情况下,EXPOSE 假定 TCP。您还可以指定 UDP:

    【讨论】:

      【解决方案2】:

      你需要暴露端口,见:https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose

      $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
      这会将容器的 8080 端口绑定到主机 127.0.0.1 上的 TCP 端口 80。您还可以指定 udp 和 sctp 端口。 Docker 用户指南详细解释了如何在 Docker 中操作端口。

      【讨论】:

        猜你喜欢
        • 2017-02-22
        • 2014-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2019-10-05
        相关资源
        最近更新 更多