我已经使用SBT创建了一个简单的scala应用程序(akka http 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..") }
}
还有我的申请。conf包含
http.host
=“127.0.0.1”和
http.port
= 9000
当我在本地运行应用程序时
sbt run
一切都很好。
所以我决定尝试docker并为我的Akka应用程序创建一个容器。
我正在使用sbt DockerPlugin并运行命令sbt docker:publishDocker它在本地计算机上创建docker映像。
因此,我使用以下命令启动了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。
有人能帮我吗?