我使用SBT創建了一個簡單的scala應用程序(akka-http REST服務)。在Mac OS Docker上運行REST應用程序時的空響應
這是應用程序的主類:
object UserApiWebService extends App {
override def main(args: Array[String]): Unit = {
implicit val system: ActorSystem = ActorSystem("user-api-system")
implicit val executionContext: ExecutionContext = system.dispatcher
implicit val materializer: ActorMaterializer = ActorMaterializer()
val userApiRoute = new UserApiRoute
val userApiRoutes = new UserApiRoutes(userApiRoute)
val config = ConfigFactory.load()
val host = config.getString("http.host")
val port = config.getInt("http.port")
println(s"Starting server on $host:$port..")
Http().bindAndHandle(userApiRoutes.routes, host, port)
println(s"Server started on $host:$port..") }
}
和我application.conf包含http.host
= 「127.0.0.1」 和http.port
= 9000
當我運行在本地運行sbt run
所有作品的應用大。
所以我決定嘗試docker併爲我的Akka應用程序創建一個容器。 我使用sbt DockerPlugin並運行命令sbt docker:publishDocker它在本地機器上創建docker鏡像。
所以我用命令
docker run -p 9000:9000 --name user-api user-api:0.1.0-SNAPSHOT
開始泊塢窗容器,我可以看到的是,容器運行正常。
如果我檢查API-REST應用程序工作正常使用命令:
curl -XGET 127.0.0.1:9000/user/34
我得到curl: (52) Empty reply from server
作爲響應。
如果我在使用docker exec -it a556b8846340 /bin/bash
輸入容器後嘗試相同的命令,我會得到正確的響應。
我正在使用macOS 10.12.6和docker版本17.09.1-ce的mac上工作。
有人可以幫助我嗎?
作品也localhost上,由於 –
@albertoadami聽起來不錯! – chenrui