我有一個非常基本的阿卡-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 - 任何人有任何想法?
呀男人 - 我不得不懷疑這是由於主機映射,並試圖127.0.0.1和使用Java編程得到它。 net.InetAddress.getLoopbackAddress.getHostAddress() - 但是這樣做的工作!我浪費了幾個小時 – rhinds