【问题标题】:Difference between using "expose" in dockerfile and docker-compose file?在 dockerfile 和 docker-compose 文件中使用“expose”的区别?
【发布时间】:2017-08-20 13:20:40
【问题描述】:

我想知道在 Dockerfile 和 Docker-Compose 文件中使用 EXPOSE 有什么区别?

如果它在一个文件中声明而不在另一个文件中声明怎么办?或者如果两者都声明了但端口号不同怎么办?

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    Dockerfile中的EXPOSE只是一个元数据信息。当有人使用docker run -P 时,它会告诉 docker 哪些端口需要暴露。

    在 compose 或 docker run 中使用它们是指定这些端口的动态方式。因此,像 nginxapache 这样的镜像总是应该在容器内的端口 80 上运行,它将在 Dockerfile 本身中使用 EXPOSE

    虽然具有可以使用环境变量控制的动态端口的图像将在 docker runcompose file 中使用暴露

    docker run -e UI_PORT=5556 --expose 5556 -P ....
    

    【讨论】:

    • 谢谢。我对 Docker 比较陌生,我有点难以理解如何解释你的答案。如果端口在 2 个文件中的暴露方式不同并且我从 docker-compose 构建和启动会发生什么?
    • 这意味着两个端口都暴露了
    • 两者都指定是多余的吗?或者一个镜像在 Dockerfile 上有一个EXPOSE 命令就足够了,以便在同一个 docker-compose.yml 文件中声明的其他服务可以直接找到它?
    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多