2016-06-11 36 views
4

我有一個非常基本的阿卡-HTTP的應用程序,基本上不超過你好,世界格局更爲 - 我已經定義了一個終點,只是約束它爲「localhost」和端口「8080 「:多克爾阿卡-HTTP應用程序終結點無法到達

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通過路由混合,但僅僅是一個虛擬端點串行化一個簡單的例子類的JSON響應)

如果我啓動它使用SBT然後端點工作正常(例如,http://localhost:8080/colour/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

而且我可以看到,搬運工人映像創建:

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 - 任何人有任何想法?

回答

11

嘗試改變的「localhost」爲0.0.0.0 在http.bindAndHandle

+0

呀男人 - 我不得不懷疑這是由於主機映射,並試圖127.0.0.1和使用Java編程得到它。 net.InetAddress.getLoopbackAddress.getHostAddress() - 但是這樣做的工作!我浪費了幾個小時 – rhinds