将 Play 应用构建为 Docker 图像,重新映射端口

Building Play App as Docker image, remapping port

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

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

更改暴露的端口
dockerExposedPorts := Seq(8080)

sbt-docker 仅构建 docker 图像。暴露一个端口是正确的,但你仍然必须将它连接到主机网络。

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

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

你有两个选择。第一个是使用默认端口 9000 启动播放应用程序,当 运行 连接您的容器时,使用 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 上。