【问题标题】:Building Play App as Docker image, remapping port将 Play App 构建为 Docker 映像,重新映射端口
【发布时间】:2016-02-02 23:17:54
【问题描述】:

我正在尝试将我的 Play 应用程序构建到一个暴露在 8080 端口上的 docker 容器中。即。对 8080 端口上的 docker 容器的请求命中了我的 play 应用程序。

我在执行此操作时遇到了麻烦。我想我可以通过将 Docker 端口 8080 映射到内部端口 9000 来做到这一点,但我不知道如何使用 sbt 插件来做到这一点。我所能做的就是改变暴露的端口使用

dockerExposedPorts := Seq(8080)

【问题讨论】:

    标签: docker playframework-2.0 sbt typesafe-activator


    【解决方案1】:

    sbt-docker 只构建 docker 镜像。暴露一个端口是正确的,但你仍然需要将它连接到主机网络。

    为此,您必须启动容器并提供正确的映射。

    docker run -p 9000:8080 ... yourImage ...
    

    【讨论】:

      【解决方案2】:

      你有两个选择。第一个是使用默认端口 9000 启动 play 应用程序,并在运行容器时使用 Docker 端口映射从容器外部的端口 8080 重定向到容器内部的端口 9000:

      docker run -p 8080:9000 yourimage
      

      选项二是编辑您的 application.conf 并将生产端口更改为 8080:

      # production
      play.server.http.port = "8080"
      

      完成后,更改dockerExposedPorts:

      dockerExposedPorts := Seq(8080)
      

      注意,在开发模式(activator run)下,它仍然会在端口 9000 上运行。

      【讨论】:

      • 选项二对我有用,非常感谢!我无法使用选项一,因为我的 PaaS 不允许我进行端口映射。
      猜你喜欢
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 2020-03-08
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      相关资源
      最近更新 更多