Docker Akka-Http应用程序端点无法访问

我有一个非常基本的Akka-http应用程序,它基本上不比Hello-world设置更多 – 我定义了一个端点并简单地将它绑定到“localhost”和端口“8080”:

object Main extends App with Routes { private implicit val system = ActorSystem() protected implicit val executor: ExecutionContext = system.dispatcher protected implicit val materializer: ActorMaterializer = ActorMaterializer() protected val log: LoggingAdapter = Logging( system, getClass ) log.info( "starting server" ) Http().bindAndHandle( logRequestResult("log",Logging.InfoLevel)( allRoutes ), "localhost", 8080 ) log.info( "server started, awaiting requests.." ) } 

(allRoutes是通过Routes混合的,但是只是一个将简单的case类串行化为JSON响应的虚拟端点)

如果我使用sbt启动它,那么端点工作正常(例如http:// localhost:8080 / color / red )。

我现在试图将它打包到一个Docker容器中来运行它 – 我已经阅读了http://yeghishe.github.io/2015/06/24/running-akka-applications.html ,并添加了sbt-native -package插件( http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#customize )。

现在我运行sbt docker:publishLocal

我可以看到docker镜像已经被创build:

 REPOSITORY TAG IMAGE ID CREATED SIZE sample-rest-api 0.0.1 3c6ee44985b4 9 hours ago 714.4 MB 

如果我现在开始我的图像,映射8080端口如下:

 docker run -p 8080:8080 sample-rest-api:0.0.1 

我看到我通常在启动时看到的日志输出,所以它看起来好像已经开始,但是,如果我然后尝试访问相同的URL,我现在得到的响应

“加载页面时出现问题:连接已重置”

如果我检查docker ps我看到图像正在运行,并按预期映射的端口:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 27848729a425 sample-rest-api:0.0.1 "bin/sample-rest-api" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp furious_heisenberg 

我在Ubuntu 16.04上运行 – 任何人有任何想法?

尝试将“localhost”更改为0.0.0.0在http.bindAndHandle中