Tengo una aplicación Akka-http muy básica que básicamente no es mucho más que una configuration Hello-world: he definido un punto final y simplemente lo vinculé a "localhost" y al puerto "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 se mezcla en Rutas, pero es solo un punto final ficticio que serializa una class de caso simple a una respuesta JSON)
Si lo inicio usando sbt, entonces los puntos finales funcionan bien ( http: // localhost: 8080 / color / networking por ejemplo).
Ahora estoy intentando empaquetarlo en un contenedor Docker para ejecutarlo. He leído cosas como http://yeghishe.github.io/2015/06/24/running-akka-applications.html y he agregado el sbt-native -package de package ( http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#customize ).
Ahora ejecuto sbt docker:publishLocal
Y puedo ver que la image del acoplador ha sido creada:
REPOSITORY TAG IMAGE ID CREATED SIZE sample-rest-api 0.0.1 3c6ee44985b4 9 hours ago 714.4 MB
Si ahora comienzo mi image, mapeo el puerto 8080 de la siguiente manera:
docker run -p 8080:8080 sample-rest-api:0.0.1
Veo la salida de logging que normalmente veo al inicio, por lo que parece que ha comenzado bien, sin embargo, si bash acceder a la misma URL que antes, ahora recibo la respuesta
"Problema al cargar la página: la connection se restableció"
Si docker ps
, veo que la image se está ejecutando y los puertos están mapeados como se esperaba:
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
Me estoy ejecutando en Ubuntu 16.04 – ¿Alguien tiene alguna idea?
Intenta cambiar 'localhost' a 0.0.0.0 en http.bindAndHandle